Skip to content

Commit e943849

Browse files
committed
WebSubmit: photo submission: French caption
* Adds tabs on uploaded image captions with English and French languages
1 parent 8f5827f commit e943849

File tree

2 files changed

+59
-7
lines changed

2 files changed

+59
-7
lines changed

modules/websubmit/lib/functions/Move_Photos_to_Storage.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ def Move_Photos_to_Storage(parameters, curdir, form, user_info=None):
137137
bibrecdocs = BibRecDocs(sysno)
138138
for photo_id in photo_manager_order_list:
139139
photo_description = read_param_file(curdir, 'PHOTO_MANAGER_DESCRIPTION_' + photo_id)
140+
# Read also fr description
141+
photo_description_fr = read_param_file(curdir, 'PHOTO_MANAGER_DESCRIPTION_' + photo_id+ '_fr')
140142
# We must take different actions depending if we deal with a
141143
# file that already exists, or if it is a new file
142144
if photo_id in photo_manager_new_dict.keys():
@@ -228,6 +230,8 @@ def Move_Photos_to_Storage(parameters, curdir, form, user_info=None):
228230
for file_format in [bibdocfile.get_format() \
229231
for bibdocfile in bibdoc.list_latest_files()]:
230232
bibdoc.set_comment(photo_description, file_format)
233+
if photo_description_fr:
234+
bibdoc.set_description(photo_description_fr, file_format)
231235
_do_log(curdir, "Added comment %s" % photo_description)
232236
else:
233237
# Existing file
@@ -285,6 +289,7 @@ def Move_Photos_to_Storage(parameters, curdir, form, user_info=None):
285289
for file_format in [bibdocfile.get_format() \
286290
for bibdocfile in bibdoc.list_latest_files()]:
287291
bibdoc.set_comment(photo_description, file_format)
292+
bibdoc.set_description(photo_description_fr, file_format)
288293
_do_log(curdir, "Added comment %s" % photo_description)
289294

290295
# Now delete requeted files
@@ -406,6 +411,7 @@ def create_photos_manager_interface(sysno, session_id, uid,
406411
PHOTO_MANAGER_NEW = read_param_file(curdir, 'PHOTO_MANAGER_NEW', split_lines=True)
407412
photo_manager_new_dict = dict([value.split('/', 1) for value in PHOTO_MANAGER_NEW if '/' in value])
408413
photo_manager_descriptions_dict = {}
414+
photo_manager_descriptions_dict_fr = {}
409415
photo_manager_photo_fullnames = {}
410416
photo_manager_meta = {}
411417
# Compile a regular expression that can match the "default" icon,
@@ -429,6 +435,7 @@ def create_photos_manager_interface(sysno, session_id, uid,
429435
photo_manager_meta[doc_id] = {}
430436
icon_url = doc.get_icon(subformat_re=CFG_BIBDOCFILE_ICON_SUBFORMAT_RE_DEFAULT).get_url()
431437
description = ""
438+
description_fr = ""
432439

433440
sizes = dict([(x.get_subformat() if x.get_subformat() != '' else 'master',
434441
(x.get_url(), x.get_full_path())) for x in doc.list_all_files()])
@@ -456,7 +463,11 @@ def create_photos_manager_interface(sysno, session_id, uid,
456463
# photo_files.append((format, url))
457464
if not description and bibdoc_file.get_comment():
458465
description = escape(bibdoc_file.get_comment())
466+
if not description_fr and bibdoc_file.get_description():
467+
description_fr = escape(bibdoc_file.get_description())
468+
459469
photo_manager_descriptions_dict[doc_id] = description
470+
photo_manager_descriptions_dict_fr[doc_id] = description_fr
460471
photo_manager_icons_dict[doc_id] = icon_url
461472
try:
462473
photo_manager_photo_fullnames[doc_id] = bibdoc_file.fullname
@@ -476,10 +487,13 @@ def create_photos_manager_interface(sysno, session_id, uid,
476487

477488
if PHOTO_MANAGER_ORDER:
478489
# Get description from disk only if some changes have been done
479-
description = escape(read_param_file(curdir,
480-
'PHOTO_MANAGER_DESCRIPTION_' + doc_id))
490+
description = escape(read_param_file(curdir, 'PHOTO_MANAGER_DESCRIPTION_' + doc_id))
491+
description_fr = escape(read_param_file(curdir, 'PHOTO_MANAGER_DESCRIPTION_' + doc_id+'_fr'))
481492
else:
482493
description = escape(photo_manager_descriptions_dict[doc_id])
494+
description_fr = escape(photo_manager_descriptions_dict_fr[doc_id])
495+
496+
# Try to read the crop parameter
483497

484498
link_to_crop = ''
485499
if photo_manager_meta[doc_id]['can_cropped']:
@@ -499,14 +513,19 @@ def create_photos_manager_interface(sysno, session_id, uid,
499513
<div style='clear:both'></div>
500514
%(crop_link)s
501515
<span class='filename'>%(fullname)s</span>
502-
<textarea placeholder='Add an english description' id='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s' name='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s'>%(description)s</textarea>
516+
<textarea placeholder='Add an English description' id='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s' name='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s'>%(description)s</textarea>
517+
<textarea style='display:none' placeholder='Add a French description' id='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s_fr' name='PHOTO_MANAGER_DESCRIPTION_%(doc_id)s_fr'>%(description_fr)s</textarea>
503518
<div class='clear:both'></div>
519+
<div class='language_control' data-id='%(doc_id)s'>
520+
<a href='javascript:void(0)' class='active_lang' rel='english'>English</a><a href='javascript:void(0)' rel='french'>French</a>
521+
</div>
504522
</div>
505523
</div>''' % {'fullname': fullname,
506524
'doc_id': doc_id,
507525
'CFG_SITE_URL': CFG_SITE_URL,
508526
'crop_link': link_to_crop,
509527
'icon_url': icon_url,
528+
'description_fr': description_fr,
510529
'description': description})
511530

512531
out += '''
@@ -918,7 +937,20 @@ class : 'uploader-alert-message',
918937
$("#photo_manager_delete").val($("#photo_manager_delete").val() + '\\n' + docid);
919938
}
920939
}
921-
940+
$('body').on('click', '.language_control a', function(){
941+
var id = $(this).parent().data('id')
942+
, rel = $(this).attr('rel')
943+
, search = '#PHOTO_MANAGER_DESCRIPTION_'+id;
944+
$(this).parent().find('a').removeClass('active_lang');
945+
$(this).addClass('active_lang');
946+
if(rel == 'english'){
947+
$(search+'_fr').hide();
948+
$(search).show();
949+
}else{
950+
$(search).hide();
951+
$(search+'_fr').show();
952+
}
953+
});
922954
function format_picture(id, file, response){
923955
// Get urls for cropped preview and thumbnail
924956
var crop_thumb = build_icon_url(response.name, 'files')
@@ -933,9 +965,11 @@ class : 'uploader-alert-message',
933965
"<div style='clear:both'></div>"+
934966
"<a rel='crop' href='javascript:void(0)' data-id='"+file.id+"' data-name='"+file.name+"' data-original='"+response.absPath+"' data-thumb='"+crop_thumb+"'>Crop</a>"+
935967
"<span class='filename'>"+file.name+"</span>"+
936-
"<textarea placeholder='Add an english description' id='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"' name='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"'></textarea>" +
968+
"<textarea placeholder='Add an English description' id='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"' name='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"'></textarea>" +
969+
"<textarea style='display:none' placeholder='Add a French description' id='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"_fr' name='PHOTO_MANAGER_DESCRIPTION_"+ file.id +"_fr'></textarea>" +
937970
"<div class='clear:both'></div>"+
938971
"<div class='language_control' data-id='"+file.id+"'> " +
972+
"<a href='javascript:void(0)' class='active_lang' rel='english'>English</a><a href='javascript:void(0)' rel='french'>French</a>" +
939973
"</div>"+
940974
"</div>");
941975
}

modules/websubmit/web/websubmit.css

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,24 @@ div.cropImgWrapper {
258258
text-decoration: none;
259259
background-color: #2860f7;
260260
}
261-
.white-popup-big{
262-
z-index: 999;
261+
.language_control {
262+
text-align: left;
263+
padding: 0px 0px 10px 0;
264+
width: 263px!important;
265+
border-radius: 0;
266+
margin: 2px auto;
267+
}
268+
.language_control a{
269+
display: inline;
270+
line-height: normal!important;
271+
padding: 5px 10px;
272+
}
273+
.language_control a:hover{
274+
text-decoration: none;
275+
}
276+
.language_control a.active_lang{
277+
border-bottom: 1px solid #ccc;
278+
border-left: 1px solid #ccc;
279+
background: #fff;
280+
border-right: 1px solid #ccc;
263281
}

0 commit comments

Comments
 (0)