diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/site/f_text_view_frame.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/site/f_text_view_frame.js Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,739 @@
+var gResetOtherFieldsOnFilterFieldChange = true;
+
+var myDefaultOuterLayoutSettings = {
+ center : {
+ paneSelector :".outer-center"
+ },
+ north : {
+ size :50,//30,
+ spacing_open :0,
+ closable :false,
+ resizable :false
+ }
+};
+
+var innerNorthPaneDefaults = {
+ 'innerNorthPaneOpened' :'0',
+ 'selectedTab' :'0'
+};
+
+onInnerNorthPaneClose = function() {
+ _setCookie('innerNorthPaneOpened', '0');
+ $('#add_comment_btn').css('top', 63) ;
+ return true;
+}
+
+onInnerNorthPaneOpen = function() {
+ _setCookie('innerNorthPaneOpened', '1');
+ $('#add_comment_btn').css('top', 149) ;
+ return true;
+}
+
+// DEFAULT LAYOUT SETTINGS
+var myDefaultInnerLayoutSettings = {
+ north : {
+ // size: 66, /* 66 for FF */
+ size :88, /* 66 for FF */
+ spacing_closed :8,
+ slidable :false,
+ resizable :false, /* important */
+ togglerLength_closed :"100%",
+ togglerLength_open :"100%",
+ togglerAlign_closed :"center",
+ /* togglerContent_closed :"options", */
+ togglerTip_closed :gettext("click to show options"),
+ togglerTip_open :gettext("click to hide options"),
+ initClosed :false,
+ paneSelector :".inner-north",
+ onopen :"onInnerNorthPaneOpen",
+ onclose :"onInnerNorthPaneClose"
+ }
+};
+
+var outerLayout, innerLayout;
+layoutFrames = function() {
+
+ var innerNorthPaneOpened = $.cookie('innerNorthPaneOpened');
+ myDefaultInnerLayoutSettings.north.initClosed = (innerNorthPaneOpened === null) ? (innerNorthPaneDefaults['innerNorthPaneOpened'] == '0')
+ : (innerNorthPaneOpened == "0");
+
+ outerLayout = $('body').layout(myDefaultOuterLayoutSettings);
+ innerLayout = $('div.outer-center').layout(myDefaultInnerLayoutSettings);
+
+ // to trigger add_comment_btn positioning
+ if (myDefaultInnerLayoutSettings.north.initClosed)
+ onInnerNorthPaneClose() ;
+ else
+ onInnerNorthPaneOpen() ;
+}
+
+fillFilterTab = function() {
+
+ var tab = $('#c_filter');
+
+ var html = '
' +
+ '' +
+ '' +
+ '| ' +
+ gettext('Authors') +
+ ' | ' +
+ ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ ' | ' +
+ '' +
+ gettext('States') +
+ ' | ' +
+ ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ '
' +
+ '' +
+ '| ' +
+ gettext('Dates') +
+ ' | ' +
+ ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ ' | ' +
+ '' +
+ gettext('Tags') +
+ ' | ' +
+ ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ '
' +
+ '
';
+ tab.append($(html));
+
+ $("#c_filter input[type='text']").add("#c_filter select").addClass('c_filter_field') ;
+
+ $("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ var elt = $(this) ;
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ //console.info($(this)) ;
+ //console.info(elt) ;
+ //applyFilter($(this)) ;
+ applyFilter(elt) ;
+ }) ;
+ }
+ });
+
+ $("#c_filter_btn").click(function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ var elt = $("#filter_text") ;
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ applyFilter(elt) ;
+ }) ;
+ }
+ });
+
+ $('#filter_text').keyup( function(e) {
+ if (e.keyCode == 13) {$("#c_filter_btn").click();}
+ });
+
+ $("#c_filterreset_btn").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ resetFilter();
+ }) ;
+ }
+ });
+
+ $("#c_filterhideall_btn").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ frames['text_view_comments'].hideAll() ;
+ }) ;
+ }
+ });
+
+}
+fillTopToolbar = function() {
+
+ var parent = $('#outer-north');
+
+ var viewPrev = gettext('view previous comment') ;
+ var viewNext = gettext('view next comment') ;
+ var viewFirst = gettext('view first comment') ;
+ var viewLast = gettext('view last next comment') ;
+ var viewAll = gettext('view all comments') ;
+ var advancedInterface = gettext('toggle advance interface') ;
+ var print = gettext('print document with/without comments') ;
+ var exportDoc = gettext('export document with/without comments') ;
+ var fullscreen = gettext('toggle full screen view') ;
+ var feed = gettext('text feed') ;
+ var addComment = gettext('add a comment') ;
+
+ var html = '' +
+ '

' +
+ '

' +
+ '

' +
+ '

' +
+ '
' +
+ '' +
+ '
' +
+ '' +
+ '' +
+ '' +
+ '| ' +
+ '' +
+ ' ' +
+ ' (' + gettext('filter:') + ' / /)' +
+ '' +
+ ' | ' +
+ '' +
+ '' +
+ ', ' + gettext('browse by:') + ' ' +
+ '' +
+ '' +
+ ' | ' +
+ '' +
+ ' ' +
+ ' ' +
+ ' | ' +
+ '' +
+ '-' +
+ '-' +
+ '/' +
+ '' +
+ ' | ' +
+ '' +
+ ' ' +
+ ' ' +
+ ' | ' +
+ '' +
+ ' ' +
+ ' | ' +
+ '' +
+ ' ' +
+ ' | ' +
+ '' +
+ ' ' +
+ ' | ' +
+ '
' +
+ '' +
+ '
' ;
+ parent.prepend($(html));
+
+ $("#add_comment_btn").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ frames['text_view_comments'].gSync.showCommentForm(null) ;
+ }) ;
+ }
+ });
+
+ var showBrowseIndx = function() {
+ $("#browse_by option").each(function() {
+ $("#c_browse_indx_"+this.value).hide() ;
+ }) ;
+ $('#c_browse_indx_' + $('#browse_by').val()).show() ;
+ };
+
+ var first_browse_by_val = $.cookie('browse_by');
+ first_browse_by_val = (first_browse_by_val == null) ? "location" : first_browse_by_val ;
+ _setCookie('browse_by', $('#browse_by').val());
+ $("#browse_by option[value="+ first_browse_by_val +"]").attr("selected", true);
+ showBrowseIndx() ;
+
+ $("#browse_by").change(function() {
+ _setCookie('browse_by', $('#browse_by').val());
+ showBrowseIndx() ;
+ });
+
+ var lBrowse = function(whereto) {
+ if (frames['text_view_comments'].readyForAction())
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ frames['text_view_comments'].browse($('#browse_by').val(), whereto);
+ }) ;
+ };
+ $("#c_browse_prev").click( function() {lBrowse("prev");});
+ $("#c_browse_next").click( function() {lBrowse("next");});
+ $("#c_browse_first").click( function() {lBrowse("first");});
+ $("#c_browse_last").click( function() {lBrowse("last");});
+ $("#c_browse_all").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ frames['text_view_comments'].checkForOpenedDialog(null, function() {
+ frames['text_view_comments'].gSync.showAllComments() ;
+ }) ;
+ }
+ });
+
+ $("#c_print_btn").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
+ frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
+ openPrintDialog() ;
+ }
+ });
+
+ $("#c_export_btn").click( function() {
+ if (frames['text_view_comments'].readyForAction()) {
+ var ids = frames['text_view_comments'].gDb.getFilteredCommentIdsAsString() ;
+ frames['text_view_comments'].CY.log($("#filteredIds").val(ids)) ;
+ openExportDialog() ;
+ }
+ });
+
+ if (frames['text_view_comments'].gLayout.isInComentSite()) {
+ $("#c_fullscreen_btn").click( function() {
+ top.v_toggleFrameSize();
+ });
+ } ;
+
+ $("#c_advanced_btn").click( function() {
+ $('.ui-layout-toggler').click() ; // calling the layout method did not work well edo that instead
+ }) ;
+
+ setThreadPref = function() {
+ var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
+
+ var btn_src = sv_media_url + '/img/unthread_box.png' ;
+ var btn_desc = gettext('unthread discussions') ;
+ if (v == '0') {
+ btn_src = sv_media_url + '/img/thread_box.png' ;
+ btn_desc = gettext('thread discussions') ;
+ }
+ $('#c_thread_unthread_img').attr('src', btn_src).attr('alt', btn_desc).attr('title', btn_desc) ;
+ };
+
+ setThreadPref();
+ $('#c_thread_unthread').click( function() {
+ var v = frames['text_view_comments'].c_readPreference('comments', 'threadpad');
+ var anti_v = (v == '0') ? '1' : '0';
+ frames['text_view_comments'].c_persistPreference('comments', 'threadpad', anti_v);
+ setThreadPref();
+ frames['text_view_comments'].gSync.animateToTop() ;
+ });
+
+}
+
+onSliderStop = function() {
+ var slideVal = $("#c_slider").slider('value') ;
+// console.info("in onSliderStop slider val : " + slideVal) ;
+ if (slideVal > (frames['text_view_comments'].gConf['sliderFixedMin'] * 100))
+ $("#c_slider").slider('value', [90]) ;
+ if (slideVal < (frames['text_view_comments'].gConf['sliderFixedMax'] * 100))
+ $("#c_slider").slider('value', [10]) ;
+
+ frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
+ frames['text_view_comments'].c_persistPreference('layout', 'comments_col_width', slideVal);
+}
+
+fillTextPreferencesTab = function() {
+ var tab = $('#c_text_preferences');
+ tab.append($(
+ '' +
+ '' +
+ '| ' +
+ gettext('Text style') +
+ ' | ' +
+ ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ '
' +
+ '
')) ;
+ var styles = frames['text_view_comments'].gTextStyles ;
+ for (var key in styles) {
+ $("#c_textpref_style").append($("")) ;
+ }
+
+ var setTextStyle = function() {
+ var styles = frames['text_view_comments'].gTextStyles ;
+ var wish = $('#c_textpref_style').val() ;
+ for (var key in styles) {
+ if (key == wish)
+ frames['text_view_comments'].CY.get("#textcontainer").addClass(styles[key]) ;
+ else
+ frames['text_view_comments'].CY.get("#textcontainer").removeClass(styles[key]) ;
+ }
+ };
+
+ var setTextStyleField = function() {
+ var v = frames['text_view_comments'].c_readPreference('text', 'style');
+ $('#c_textpref_style').val(v);
+ };
+
+ $("#c_textpref_style").change(function(v) {
+ frames['text_view_comments'].c_persistPreference('text', 'style', $("#c_textpref_style").val());
+ setTextStyle();
+ });
+
+ setTextStyleField();
+ setTextStyle();
+}
+
+fillPreferencesTab = function() {
+ var tab = $('#c_preferences');
+
+ var html = '' +
+ '';
+ tab.append($(html)) ;
+
+ setPreferencesFieldsValue = function() {
+ var v = frames['text_view_comments'].c_readPreference('general', 'animduration');
+ $('#c_pref_animduration').val(v);
+ };
+
+ setPreferencesFieldsValue();
+
+ $('#c_pref_animduration').blur( function() {
+ var v = parseFloat($(this).val());
+ if (isNaN(v) || (v <= 0) || (v > 1)) {
+ v = frames['text_view_comments'].c_readDefaultPreference('general', 'animduration');
+ }
+ $(this).val(v);
+ });
+
+ $('#c_pref_reset_btn').click( function() {
+ frames['text_view_comments'].c_resetPreferences(['general']);
+ setPreferencesFieldsValue();
+
+ enqueueMsg(gettext('preferences reset (will apply on next load)'));
+ });
+
+ $('#c_pref_save_btn').click( function() {
+ frames['text_view_comments'].c_persistPreference('general', 'animduration', $('#c_pref_animduration').val());
+
+ enqueueMsg(gettext('preferences saved (will apply on next load)'));
+ });
+}
+
+initFrame = function() {
+ _initYesNoDialog();
+ _initPrintDialog() ;
+
+ $(window).resize(function(){
+ onSliderStop();
+// console.log('in frame resize' + $("#c_slider").slider('value')) ;
+// console.log('in frame resize' + frames['text_view_comments'].CY.DOM.winWidth()) ;
+// console.log('in frame resize' + $(window).width()) ;
+ });
+
+ //$('').appendTo("#c-btns").slider({
+ $('#c_slider').slider({
+ animate: true,
+ range: "min",
+ value: frames['text_view_comments'].c_readPreference('layout','comments_col_width'),
+ min: 1,
+ iframeFix: true,
+ max: 100,
+// step: 5,
+ slide: function(event, ui) {
+ var slideVal = ui.value ;
+ frames['text_view_comments'].c_setCommentsColWidth(slideVal) ;
+ },
+ stop:function(event, ui) {
+ onSliderStop() ;
+ }
+ }) ;
+
+
+ _initTabs();
+
+ f_interfaceFreeze();
+};
+
+_initTabs = function() {
+ $(".inner-north").tabs();
+
+ var selectedTab = $.cookie('selectedTab');
+ selectedTab = (selectedTab === null) ? innerNorthPaneDefaults['selectedTab'] : parseInt(selectedTab);
+ $(".inner-north").tabs('select', selectedTab);
+ $(".inner-north").bind('tabsselect', function(event, ui) {
+ // // Objects available in the function context:
+ // ui.tab // anchor element of the selected (clicked) tab
+ // ui.panel // element, that contains the selected/clicked tab
+ // contents
+ // ui.index // zero-based index of the selected (clicked) tab
+ _setCookie('selectedTab', ui.index);
+
+ });
+}
+
+_initYesNoDialog = function() {
+ $('#dialog_h').dialog( {
+ // bgiframe: true, // why would we ?
+ autoOpen :false,
+ modal :true
+ });
+}
+
+_setCookie = function(name, value) {
+ var cookieExpire = new Date();
+ cookieExpire.setFullYear(2100, 0, 1);
+ $.cookie(name, value, {
+ 'expires' :cookieExpire,
+ 'path': '/'
+ });
+}
+
+//contains code thats offered by the text_view_comment_frame to its child frame text_view_comment
+f_getFrameFilterData = function () {
+ var name = $('#filter_name').val(); ;
+ var date_str = $('#filter_date').val(); ;
+ var text = $('#filter_text').val(); ;
+ var tag = $('#filter_tag').val(); ;
+ var state = $('#filter_state').val(); ;
+ return {'name':name, 'date':date_str, 'text':text, 'tag':tag, 'state':state} ;
+}
+
+f_setFilterValue = function (obj) {
+ for (key in obj) {
+ if (key.indexOf('filter_') == 0)
+ $('#'+key).val(obj[key]); // wont explode even if argument is silly
+ }
+}
+
+f_isFrameFilterFieldsInit = function () {
+ var obj = f_getFrameFilterData() ;
+ var ret = true ;
+ for (key in obj) {
+ ret = ret && (obj[key] == "") ;
+ }
+ return ret ;
+}
+
+initFilterFields = function () {
+ $('.c_filter_field').val("") ;
+}
+
+resetFilter = function () {
+ initFilterFields() ;
+ frames['text_view_comments'].reinit() ;
+ enqueueMsg(gettext("filter reset")) ;
+}
+
+applyFilter = function(self) {
+ var val = self.val() ;
+ if (gResetOtherFieldsOnFilterFieldChange) {
+ initFilterFields() ;
+ self.val(val) ;
+ }
+ frames['text_view_comments'].reinit();
+ enqueueMsg(gettext("filter applied"));
+}
+
+f_updateFilterCountResult = function(nbDiscussions, nbComments, nbReplies, nbAllComments, nbAllReplies) {
+ // update result counter message field.
+ $("#c_f_res_nb_dis").html(nbDiscussions) ;
+ $("#c_f_res_nb_dis_txt").html(ngettext('discussion', 'discussions', nbDiscussions)) ;
+
+ $("#c_f_res_nb_com").html(nbComments) ;
+ $("#c_f_res_nb_tot_com").html(nbAllComments) ;
+ $("#c_f_res_nb_com_txt").html(ngettext('comment', 'comments', nbComments)) ;
+ $("#c_f_res_nb_rep").html(nbReplies) ;
+ $("#c_f_res_nb_tot_rep").html(nbAllReplies) ;
+ $("#c_f_res_nb_rep_txt").html(ngettext(' reply', ' replies', nbReplies)) ;
+
+ // update browser infos
+ $("#c_browse_indx_total").html(nbDiscussions) ;
+
+ //console.info('nbDiscussions + typeof nbDiscussions +nbComments + typeof nbComments) ;
+ $("#c_filter_results").show() ;
+} ;
+
+f_updateFilterCountDetailed = function(detailed) {
+ if (detailed) {
+ $("#c_f_res_details").show() ;
+ $("c_browse_all").val('View all (filtered) comments')
+ }
+ else {
+ $("#c_f_res_details").hide() ;
+ $("#c_browse_all").val('View all comments')
+ }
+} ;
+
+f_updateFilterData = function(newFilterData) {
+// console.info(newFilterData) ;
+ // users
+ var selectedNameOption = $("#filter_name option:selected").attr("name") ;
+ var all = gettext("all") ;
+ $("#filter_name option").remove() ;
+
+ $("#filter_name").append($("")) ;
+ for (var i=0, ilen=newFilterData['names'].length; i < ilen ; i++) {
+ var item = newFilterData['names'][i] ;
+ $("#filter_name").append($("")) ;
+ }
+
+ $("#filter_name option[name="+selectedNameOption+"]").attr("selected", true);
+
+ // dates
+ var selectedDateOption = $("#filter_date option:selected").attr("name") ;
+
+ $("#filter_date option").remove() ;
+
+ $("#filter_date").append($("")) ;
+ for (var i=0, ilen=newFilterData['dates'].length; i < ilen ; i++) {
+ var item = newFilterData['dates'][i] ;
+ var ddd = ngettext('last 24 hours (%(nb_comments)s)', 'last %(nb_days)s days (%(nb_comments)s)', item.nb_day) ;
+ var ccc = interpolate(ddd,{'nb_days':item.nb_day, 'nb_comments':item.nb_comments}, true) ;
+
+ $("#filter_date").append($("")) ;
+ }
+
+ $("#filter_date option[name="+selectedDateOption+"]").attr("selected", true);
+
+ // text : nothing to do
+
+ // tags
+ var selectedTagOption = $("#filter_tag option:selected").attr("name") ;
+
+ $("#filter_tag option").remove() ;
+
+ $("#filter_tag").append($("")) ;
+ for (var i=0, ilen=newFilterData['tags'].length; i < ilen ; i++) {
+ var item = newFilterData['tags'][i] ;
+ $("#filter_tag").append($("")) ;
+ }
+ $("#filter_tag option[name="+selectedTagOption+"]").attr("selected", true);
+
+ // states
+ var selectedStateOption = $("#filter_state option:selected").attr("state") ;
+
+ $("#filter_state option").remove() ;
+
+ $("#filter_state").append($("")) ;
+ for (var i=0, ilen=newFilterData['states'].length; i < ilen ; i++) {
+ var item = newFilterData['states'][i] ;
+ $("#filter_state").append($("")) ;
+ }
+ $("#filter_state option[name="+selectedStateOption+"]").attr("selected", true);
+} ;
+
+f_interfaceUnfreeze = function() {
+ // tabs headers
+ for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
+ $(".inner-north").tabs("enable", i);
+ }
+
+ $(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
+ $(this).attr("disabled", false);
+ });
+
+ $("#c_slider").slider('enable') ;
+
+} ;
+
+f_interfaceFreeze = function() {
+ // tabs headers
+ for ( var i = 0, ilen = $(".c_tab").length; i < ilen; i++) {
+ $(".inner-north").tabs("disable", i);
+ }
+
+ $(".inner-north select").add(".inner-north input").add("#outer-north select").add("#outer-north input").each( function() {
+ $(this).attr("disabled", true);
+ });
+
+ $("#c_slider").slider('disable') ;
+} ;
+
+f_enqueueMsg = function(msg) {
+ enqueueMsg(msg) ;
+} ;
+
+f_enqueueErrorMsg = function(msg) {
+ enqueueErrorMsg(msg) ;
+} ;
+
+f_removeLoadingMsg = function() {
+ removeLoadingMsg() ;
+}
+
+f_initFrame = function() {
+ initFrame() ;
+}
+
+f_layoutFrames = function() {
+ layoutFrames() ;
+}
+
+f_fillTextPreferencesTab = function() {
+ fillTextPreferencesTab() ;
+}
+
+f_fillPreferencesTab = function() {
+ fillPreferencesTab() ;
+}
+
+f_fillBrowseSection = function() {
+ fillBrowseSection() ;
+}
+
+f_fillFilterTab = function() {
+ fillFilterTab() ;
+}
+
+f_fillTopToolbar = function() {
+ fillTopToolbar() ;
+}
+
+f_yesNoDialog = function(htmlContent, title, noFunction, noFunctionContext, noFunctionArgs, yesFunction, yesFunctionContext, yesFunctionArgs) {
+ $('#dialog_h').html(htmlContent) ;
+
+ $('#dialog_h').dialog('option', 'title', title) ;
+
+ function onNo() {
+ if (noFunction != null)
+ noFunction.call(noFunctionContext, noFunctionArgs) ;
+ }
+
+ function onYes() {
+ if (yesFunction != null)
+ yesFunction.call(yesFunctionContext, yesFunctionArgs) ;
+ }
+ var buttons = {} ;
+ buttons[gettext('No')] = function() {$(this).dialog('close');onNo();} ;
+ buttons[gettext('Yes')] = function() {$(this).dialog('close');onYes();} ;
+ $('#dialog_h').dialog('option', 'buttons', buttons) ;
+ $('#dialog_h').dialog('open') ;
+}
+
+f_setCookie = function(name, value) {
+ _setCookie(name, value) ;
+}