Ignore:
Timestamp:
23.10.2009 16:12:55 (3 years ago)
Author:
chris
Message:

zms-2.11.4-01

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/dtml/ZMSContainerObject/main_js.dtml

    r723 r750  
    33 
    44//------------------------------------------------------------------------------ 
    5 // --  
     5// -- Row-Highlighter 
    66//------------------------------------------------------------------------------ 
    77 
     
    1313      if (tr.id!='undefined' && tr.id.indexOf('tr_')==0) { 
    1414        $("a:first",tr).addClass( "zmiHighlightAction"); 
    15         $(el).addClass("zmiContainerHighlight"); 
     15        $("td.zmiContainerColLeft,td.zmiContainerColCenter,td.zmiContainerColRight",tr).addClass("zmiContainerHighlight"); 
    1616        return; 
    1717      } 
     
    2626      if (tr.id!='undefined' && tr.id.indexOf('tr_')==0) { 
    2727        $("a:first",tr).removeClass( "zmiHighlightAction"); 
    28         $(el).removeClass("zmiContainerHighlight"); 
     28        $("td.zmiContainerColLeft,td.zmiContainerColCenter,td.zmiContainerColRight",tr).removeClass("zmiContainerHighlight"); 
    2929        return; 
    3030      } 
     
    4949 
    5050//------------------------------------------------------------------------------ 
    51 // --  
    52 //------------------------------------------------------------------------------ 
    53  
    54   /** 
    55    * Array of button action-codes. 
    56    */ 
    57   arrButton = new Array(); 
    58   arrButton[0] = "trashcan"; 
    59   arrButton[1] = "cut"; 
    60   arrButton[2] = "copy"; 
    61   arrButton[3] = "paste"; 
    62  
    63   /** 
    64    * Array of button types. 
    65    */ 
    66   arrButtonType = new Array(); 
    67   arrButtonType[0] = 0; 
    68   arrButtonType[1] = 0; 
    69   arrButtonType[2] = 0; 
    70   arrButtonType[3] = 1; 
    71  
    72   /** 
    73    * 
    74    * @param id 
    75    * @param sort_id 
    76    */ 
    77   function paramExec(id, sort_id)  
     51// -- Action-selects  
     52//------------------------------------------------------------------------------ 
     53 
     54/** 
     55 * Expand action-select for container-object. 
     56 * 
     57 * @param el 
     58 * @param id 
     59 */ 
     60function zmiExpandActionSelectContainer(el, abs_url)  
     61{ 
     62  zmiExpandActionSelect( el, abs_url+"/ajaxFilteredContainerActions"); 
     63} 
     64 
     65/** 
     66 * Expand action-select for child-object. 
     67 * 
     68 * @param el 
     69 * @param id 
     70 */ 
     71function zmiExpandActionSelectChild(el, abs_url)  
     72{ 
     73  var id = $(el).attr('id').substr('select_actions_'.length); 
     74  zmiExpandActionSelect( el, abs_url+"/"+id+"/ajaxFilteredChildActions"); 
     75} 
     76 
     77/** 
     78 * Expand action-select. 
     79 * 
     80 * @param el 
     81 * @param id 
     82 */ 
     83function zmiExpandActionSelect(select, target)  
     84{ 
     85  if ( select.options[select.options.length-1].text.indexOf('---') != 0) 
     86    return; 
     87   
     88  // Set wait-cursor. 
     89  $(document.body).css( "cursor", "wait"); 
     90   
     91  // JQuery.AJAX.get 
     92  $.get( target+"?lang=<dtml-var lang>", zmiExpandActionSelectHandler); 
     93} 
     94 
     95/** 
     96 * Focus select: Process Response.. 
     97 */ 
     98function zmiExpandActionSelectHandler(data) 
     99{ 
     100  // Reset wait-cursor. 
     101  $(document.body).css( "cursor", "auto"); 
     102  // Get object-id. 
     103  var id = $("select",data).attr("id").replace(/\./,"_").replace(/\-/,"_"); 
     104  var select = document.getElementById( 'select_actions_'+id); 
     105  if ( select.options[select.options.length-1].text.indexOf('---') != 0) 
     106    return; 
     107  var options = $("select",data).children("option"); 
     108  for (var i in options)  
    78109  { 
    79     var fm = document.forms['form0']; 
    80     if (id && id != null)  
     110    if ( i > 0)  
    81111    { 
    82       for (var i = 0; i < fm.elements.length; i++)  
    83       { 
    84         el = fm.elements[i]; 
    85         if ( (el.name == 'ids:list') 
    86             && (el.value == id) ) 
    87           el.checked = true; 
     112      var label = $(options[i]).attr('label'); 
     113      var value = $(options[i]).attr('value'); 
     114      var option = new Option( label, value); 
     115      select.options[ select.length] = option; 
     116    } 
     117  } 
     118  select.selectedIndex = 0; 
     119} 
     120 
     121/** 
     122 * Confirm execution of action from select. 
     123 * 
     124 * @param fm 
     125 * @param target 
     126 * @param label 
     127 */ 
     128function zmiConfirmAction(fm, target, label) 
     129{ 
     130  var b = true; 
     131  var i = countSelectedCheckboxes(fm,'ids'); 
     132  if (target.indexOf("../") == 0) { 
     133    i = 1; 
     134  } 
     135  if (target.indexOf("manage_rollbackObjChanges") >= 0) { 
     136    b = confirm("<dtml-var "js_quote(getZMILangStr('MSG_ROLLBACKVERSIONCHANGES'))">"); 
     137  } 
     138  else if (target.indexOf("manage_cutObjects") >= 0) { 
     139    var msg1 = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_CUTOBJS'))">"; 
     140    msg1 = msg1.replace("%i",""+i); 
     141    <dtml-let langs="getDescendantLanguages(lang)"> 
     142     var msg2 = ""; 
     143     <dtml-if "len(langs)>1"> 
     144      msg2 += "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DESCENDANT_LANGS'))">"; 
     145      var s = ""; 
     146      <dtml-in langs> 
     147      s += "<dtml-var "getLanguageLabel(_['sequence-item'])">"; 
     148      <dtml-unless sequence-end> 
     149      s += ","; 
     150      </dtml-unless> 
     151      </dtml-in> 
     152      msg2 = msg2.replace("%s",""+s); 
     153     </dtml-if> 
     154    </dtml-let> 
     155    var msg = msg1 + ' ' + msg2; 
     156    b = i > 0 && confirm(msg); 
     157  } 
     158  else if (target.indexOf("manage_eraseObjs") >= 0) { 
     159    var msg = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DELOBJS'))">"; 
     160    msg = msg.replace("%i",""+i); 
     161    b = i > 0 && confirm(msg); 
     162  } 
     163  else if (target.indexOf("manage_deleteObjs") >= 0) { 
     164    var msg1 = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_TRASHOBJS'))">"; 
     165    msg1 = msg1.replace("%i",""+i); 
     166    <dtml-let langs="getDescendantLanguages(lang)"> 
     167     var msg2 = ""; 
     168     <dtml-if "len(langs)>1"> 
     169      msg2 += "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DESCENDANT_LANGS'))">"; 
     170      var s = ""; 
     171      <dtml-in langs> 
     172      s += "<dtml-var "getLanguageLabel(_['sequence-item'])">"; 
     173      <dtml-unless sequence-end> 
     174      s += ","; 
     175      </dtml-unless> 
     176      </dtml-in> 
     177      msg2 = msg2.replace("%s",""+s); 
     178     </dtml-if> 
     179    </dtml-let> 
     180    var msg = msg1 + ' ' + msg2; 
     181    b = i > 0 && confirm(msg); 
     182  } 
     183  else if (target.indexOf("manage_executeMetacmd") >=0 ) { 
     184   <dtml-in "getMetaCmdIds()"> 
     185    <dtml-let metaCmd="getMetaCmd(_['sequence-item'])"> 
     186     <dtml-if "len(metaCmd['description'])>0"> 
     187      if (label == '<dtml-var "metaCmd['name']">') { 
     188        b = confirm("<dtml-var "metaCmd['description']">"); 
    88189      } 
    89     } 
    90     if (sort_id && sort_id != null)  
    91     { 
    92       el = fm.elements['_sort_id:int']; 
    93       if (el)  
    94       { 
    95         el.value = sort_id; 
    96       } 
    97     } 
    98   } 
    99  
    100   /** 
    101    * 
    102    * @param target 
    103    * @param label 
    104    */ 
    105   function confirmExec(target, label) 
    106   { 
    107     var fm = document.forms['form0']; 
    108     var b = true; 
    109     var i = countSelectedCheckboxes(fm,'ids'); 
    110     if (target.indexOf("../") == 0) { 
    111       i = 1; 
    112     } 
    113     if (target.indexOf("manage_rollbackObjChanges") >= 0) { 
    114       b = confirm("<dtml-var "js_quote(getZMILangStr('MSG_ROLLBACKVERSIONCHANGES'))">"); 
    115     } 
    116     else if (target.indexOf("manage_cutObjects") >= 0) { 
    117       var msg1 = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_CUTOBJS'))">"; 
    118       msg1 = msg1.replace("%i",""+i); 
    119       <dtml-let langs="getDescendantLanguages(lang)"> 
    120        var msg2 = ""; 
    121        <dtml-if "len(langs)>1"> 
    122         msg2 += "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DESCENDANT_LANGS'))">"; 
    123         var s = ""; 
    124         <dtml-in langs> 
    125         s += "<dtml-var "getLanguageLabel(_['sequence-item'])">"; 
    126         <dtml-unless sequence-end> 
    127         s += ","; 
    128         </dtml-unless> 
    129         </dtml-in> 
    130         msg2 = msg2.replace("%s",""+s); 
    131        </dtml-if> 
    132       </dtml-let> 
    133       var msg = msg1 + ' ' + msg2; 
    134       b = i > 0 && confirm(msg); 
    135     } 
    136     else if (target.indexOf("manage_eraseObjs") >= 0) { 
    137       var msg = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DELOBJS'))">"; 
    138       msg = msg.replace("%i",""+i); 
    139       b = i > 0 && confirm(msg); 
    140     } 
    141     else if (target.indexOf("manage_deleteObjs") >= 0) { 
    142       var msg1 = "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_TRASHOBJS'))">"; 
    143       msg1 = msg1.replace("%i",""+i); 
    144       <dtml-let langs="getDescendantLanguages(lang)"> 
    145        var msg2 = ""; 
    146        <dtml-if "len(langs)>1"> 
    147         msg2 += "<dtml-var "js_quote(getZMILangStr('MSG_CONFIRM_DESCENDANT_LANGS'))">"; 
    148         var s = ""; 
    149         <dtml-in langs> 
    150         s += "<dtml-var "getLanguageLabel(_['sequence-item'])">"; 
    151         <dtml-unless sequence-end> 
    152         s += ","; 
    153         </dtml-unless> 
    154         </dtml-in> 
    155         msg2 = msg2.replace("%s",""+s); 
    156        </dtml-if> 
    157       </dtml-let> 
    158       var msg = msg1 + ' ' + msg2; 
    159       b = i > 0 && confirm(msg); 
    160     } 
    161     else if (target.indexOf("manage_executeMetacmd") >=0 ) { 
    162      <dtml-in "getMetaCmdIds()"> 
    163       <dtml-let metaCmd="getMetaCmd(_['sequence-item'])"> 
    164        <dtml-if "len(metaCmd['description'])>0"> 
    165         if (label == '<dtml-var "metaCmd['name']">') { 
    166           b = confirm("<dtml-var "metaCmd['description']">"); 
    167         } 
    168        </dtml-if> 
    169       </dtml-let> 
    170      </dtml-in> 
    171     } 
    172     else if (target == "") { 
    173       b = false; 
    174     } 
    175     return b; 
    176   } 
    177  
    178   /** 
    179    * 
    180    * @param target 
    181    */ 
    182   function submitExec(target, id, sort_id)  
    183   { 
    184     var fm = $('form[name=form0]'); 
    185     if (target.indexOf("../") == 0) { 
    186       fm.append('<input type="hidden" name="ids:list" value="'+$('#id').val()+'"/>'); 
    187     } 
    188     $('form[name=form0]>input[id=_id]').val( id); 
    189     $('form[name=form0]>input[id=_sort_id]').val( sort_id); 
    190     fm.attr('action',target); 
    191     fm.submit(); 
    192   } 
    193  
    194   /** 
    195    * 
    196    * @param target 
    197    * @param label 
    198    * @param id 
    199    * @param sort_id 
    200    */ 
    201   function submitHref(target, label, id, sort_id) 
    202   { 
    203     paramExec(id,sort_id); 
    204     var b = confirmExec(target,label); 
    205     if (b)  
    206     { 
    207       if ((target.indexOf("manage_pasteObjs")>=0) || 
    208           (target.indexOf("manage_pasteObjects")>=0) || 
    209           (target.indexOf("manage_copyObjects")>=0) || 
    210           (target.indexOf("manage_cutObjects")>=0) || 
    211           (target.indexOf("manage_undoObjs")>=0) || 
    212           (target.indexOf("manage_deleteObjs")>=0) || 
    213           (target.indexOf("manage_eraseObjs")>=0))  
    214       { 
    215         submitExec(target,id,sort_id); 
    216       } 
    217       else  
    218       { 
    219         var fm = document.forms['submitHrefForm']; 
    220         fm.action = target; 
    221         fm.elements['id'].value = id; 
    222         fm.elements['_sort_id:int'].value = sort_id; 
    223         fm.elements['custom'].value = label; 
    224         fm.submit(); 
    225       } 
    226     } 
    227     return b; 
    228   } 
    229  
    230   /** 
    231    * Submit select. 
    232    * 
    233    * @param e 
    234    * @param id 
    235    * @param sort_id 
    236    */ 
    237   function submitSelect(e, id, sort_id)  
    238   { 
    239     var i = e.selectedIndex; 
    240     var label = e.options[i].text; 
    241     var action = e.options[i].value; 
    242     if (action.indexOf("%s/") == 0) 
    243     { 
    244       action = id + action.substring(2, action.length); 
    245     } 
    246     if (action.indexOf('?') > 0) 
    247     { 
    248       location.href = action; 
    249     } 
    250     else 
    251     { 
    252       if (!submitHref(action, label, id, sort_id)) 
    253       { 
    254         e.selectedIndex = 0; 
    255       } 
    256     } 
    257   } 
    258  
    259   /** 
    260    * 
    261    * @param e 
    262    * @param id 
    263    * @param sort_id 
    264    */ 
    265   function submitSelectCompactview(e, id, sort_id)  
    266   { 
    267     var fm = e.form; 
    268     for (i = 0; i < fm.elements.length; i++)  
    269     { 
    270       var el = fm.elements[i]; 
    271       if ( (el.type == 'checkbox') 
    272            && (el.name == 'ids:list')  
    273            && (el.checked) ) 
    274       { 
    275         var elSortId = fm.elements['sort_id_'+el.value]; 
    276         if (elSortId) 
    277         { 
    278           id = el.value; 
    279           sort_id = elSortId.value; 
    280         } 
    281       } 
    282     } 
    283     submitSelect(e, id, sort_id); 
    284   } 
    285  
    286   /** 
    287    * 
    288    * @param ac          Action-Code (0=trashcan, 1=cut, 2=copy, 3=paste) 
    289    * @param offs        Offset (0=pageBottom, 1=pageTop) 
    290    */ 
    291   function getDocumentImage(ac, offs)  
    292   { 
    293     id = ac + "Btn" + offs; 
    294     return document.images[id]; 
    295   } 
    296  
    297   /** 
    298    * 
    299    * @param ac          Action-Code (0=trashcan, 1=cut, 2=copy, 3=paste) 
    300    */ 
    301   function btnActive(ac)  
    302   { 
    303     var fm = document.forms['form0']; 
    304     for (var i = 0; i < arrButton.length; i++)  
    305     { 
    306       if (arrButton[i] == ac)  
    307       { 
    308         if (arrButtonType[i] == 0) 
    309         { 
    310           return (countSelectedCheckboxes(fm,'ids') > 0) 
    311         } 
    312         else 
    313         { 
    314           return true; 
    315         } 
    316       } 
    317     } 
    318   } 
    319  
    320 /** 
    321  * 
    322  */ 
    323 function switchButtons(evt)  
    324 { 
    325   for (var i = 0; i < arrButton.length; i++) { 
    326      btnOnMouseOut(arrButton[i]); 
    327   } 
    328   // Toggle highlighting of selected rows. 
     190     </dtml-if> 
     191    </dtml-let> 
     192   </dtml-in> 
     193  } 
     194  else if (target == "") { 
     195    b = false; 
     196  } 
     197  return b; 
     198} 
     199 
     200/** 
     201 * Execute action from select. 
     202 * 
     203 * @param fm 
     204 * @param target 
     205 * @param id 
     206 * @param sort_id 
     207 * @param custom 
     208 */ 
     209function zmiExecuteAction(fm, target, id, sort_id, custom)  
     210{ 
     211  var fm = $(fm); 
     212  $('input[id=id_prefix]',fm).val( id); 
     213  $('input[id=_sort_id]',fm).val( sort_id); 
     214  $('input[id=custom]',fm).val( custom); 
     215  fm.attr('action',target); 
     216  fm.submit(); 
     217} 
     218 
     219/** 
     220 * Choose action from select. 
     221 * 
     222 * @param e 
     223 * @param id 
     224 * @param sort_id 
     225 */ 
     226function zmiChooseAction(e, id, sort_id)  
     227{ 
     228  var fm = $(e.form); 
     229  var i = e.selectedIndex; 
     230  var label = e.options[i].text; 
     231  var action = e.options[i].value; 
     232  if (action.indexOf("%s/") == 0) { 
     233    action = id + action.substring(2, action.length); 
     234  } 
     235  if (action.indexOf('?') > 0) { 
     236    location.href = action; 
     237  } 
     238  else { 
     239    // Set checkbox. 
     240    $("input[name=ids:list][type=checkbox][value="+id+"]",fm).attr( 'checked', true); 
     241    // Confirm and execute. 
     242    if (zmiConfirmAction(fm,action,label)) { 
     243      zmiExecuteAction(fm,action,id,sort_id,label); 
     244    } 
     245  } 
     246  // Reset checkbox and select. 
     247  $("input[name=ids:list][type=checkbox][value="+id+"]",fm).attr( 'checked', false); 
     248  e.selectedIndex = 0; 
     249} 
     250 
     251//------------------------------------------------------------------------------ 
     252// -- Action-Buttons 
     253//------------------------------------------------------------------------------ 
     254 
     255var zmiActionButtons = [ 
     256      {'id':'trashcan','standalone':false}, 
     257      {'id':'cut','standalone':false}, 
     258      {'id':'copy','standalone':false}, 
     259      {'id':'paste','standalone':true} 
     260    ]; 
     261 
     262/** 
     263 * 
     264 * @param sender 
     265 * @param evt 
     266 */ 
     267function zmiActionButtonsRefresh(sender,evt)  
     268{ 
     269  var fm = $(sender).parents('form'); 
     270  var ids = countSelectedCheckboxes(fm,'ids') > 0; 
     271  // Switch buttons. 
     272  for (var ac in zmiActionButtons) { 
     273     var id = zmiActionButtons[ac]['id']; 
     274     var img = $("img[id^="+id+"Btn]"); 
     275     var standalone = zmiActionButtons[ac]['standalone']; 
     276     var active = 0; 
     277     if (ids || standalone) { 
     278       active = 1; 
     279     } 
     280     img.attr('src','<dtml-var MISC_ZMS>btn_'+id+active+'.gif'); 
     281  } 
     282  // Switch selected rows. 
    329283  var clazz = "zmiTeaserColor"; 
    330284  var els = $("input[name=ids:list][type=checkbox]"); 
     
    344298} 
    345299 
    346   /** 
    347    * Hover button on mouse-over event. 
    348    * 
    349    * @param ac          Action-Code (0=trashcan, 1=cut, 2=copy, 3=paste) 
    350    */ 
    351   function btnOnMouseOver(ac)  
    352   { 
    353     for (var offs = 0; offs <= 1; offs++)  
    354     { 
    355       var img = getDocumentImage(ac,offs); 
    356       if (img != null)  
    357       { 
    358         if (btnActive(ac)) 
    359         { 
    360           img.src = '<dtml-var MISC_ZMS>btn_' + ac + '1.gif'; 
    361         } 
    362         else 
    363         { 
    364           img.src = '<dtml-var MISC_ZMS>btn_' + ac + '0.gif'; 
    365         } 
    366       } 
    367     } 
    368   } 
    369  
    370   /** 
    371    * Lower button on mouse-out event. 
    372    * 
    373    * @param ac          Action-Code (0=trashcan, 1=cut, 2=copy, 3=paste) 
    374    */ 
    375   function btnOnMouseOut(ac)  
    376   { 
    377     for (var offs = 0; offs <= 1; offs++)  
    378     { 
    379       var img = getDocumentImage(ac,offs); 
    380       if (img != null)  
    381       { 
    382         if (btnActive(ac)) 
    383         { 
    384           img.src = '<dtml-var MISC_ZMS>btn_' + ac + '1.gif'; 
    385         } 
    386         else 
    387         { 
    388           img.src = '<dtml-var MISC_ZMS>btn_' + ac + '0.gif'; 
    389         } 
    390       } 
    391     } 
    392   } 
    393  
    394   /** 
    395    * 
    396    * @param ac          Action-Code (0=trashcan, 1=cut, 2=copy, 3=paste) 
    397    * @param target 
    398    * @param sort_id 
    399    */ 
    400   function clipboardBtnClick(ac, target, sort_id)  
    401   { 
    402     var fm = document.forms['form0']; 
    403     if (btnActive(ac))  
    404     { 
    405       paramExec(null,sort_id); 
    406       var i = countSelectedCheckboxes(fm,'ids'); 
    407       var b = confirmExec(target); 
    408       if (b)  
    409       { 
    410         submitExec(target,'e',sort_id); 
    411       } 
    412     } 
    413   } 
    414  
    415   /** 
    416    * This method (un-)checks all on page and refreshs buttons. 
    417    * 
    418    * @param v           Boolean value for new (un-)checked state. 
    419    */ 
    420   function slctBtnClick(v)  
    421   { 
    422     var fm = document.forms['form0']; 
    423     selectCheckboxes(fm,v); 
    424     switchButtons(); 
    425   } 
     300/** 
     301 * 
     302 * @param sender 
     303 * @param ac            Action-Code 
     304 * @param target 
     305 * @param sort_id 
     306 */ 
     307function zmiActionButtonClick(sender, ac, target, sort_id) { 
     308  var fm = $(sender).parents('form'); 
     309  // Switch button. 
     310  var ids = countSelectedCheckboxes(fm,'ids') > 0; 
     311  var standalone = zmiActionButtons[ac]['standalone']; 
     312  if (ids || standalone) { 
     313    // Confirm and execute. 
     314    if (zmiConfirmAction(fm,target)) { 
     315      zmiExecuteAction(fm, target,'e',sort_id); 
     316    } 
     317  } 
     318} 
     319 
     320/** 
     321 * This method (un-)checks all id-checkboxes on page and refreshs the buttons. 
     322 * 
     323 * @param sender 
     324 * @param v             Boolean value for new (un-)checked state. 
     325 */ 
     326function zmiSelectionButtonClick(sender,v)  
     327{ 
     328  var fm = $(sender).parents('form'); 
     329  selectCheckboxes(fm,v); 
     330  zmiActionButtonsRefresh(); 
     331} 
Note: See TracChangeset for help on using the changeset viewer.