Viewing File: /usr/local/cpanel/whostmgr/docroot/js2-min/managehooks.js

if(!window.LOCALE){window.LOCALE=new CPANEL.Locale}function get_hook_by_id(id){for(var key in hooks_by_key){for(var a=hooks_by_key[key].length-1;a>=0;a--){var action=hooks_by_key[key][a];if(action.id===id){return action}}}throw"No hook: "+id}var stripe_classes={true:"shown-odd",false:"shown-even"};function stripe_tbody(tbody){var shown_idx=0;var row_length=tbody.rows.length;[].forEach.call(tbody.rows,(function(r){if(DOM.getStyle(r,"display")!=="none"){var old_class=stripe_classes[!(shown_idx%2)];var new_class=stripe_classes[!!(shown_idx%2)];DOM.replaceClass(r,old_class,new_class);shown_idx++}}))}EVENT.onDOMReady((function(){CPANEL.Y.all("table.hooks-table tbody").forEach(stripe_tbody)}));function toggle_enabled(id,clicked){var hook=get_hook_by_id(id);var to_enable=!parseInt(hook.enabled);var table=DOM.getAncestorByTagName(clicked,"table");var overlay=new CPANEL.ajax.Page_Progress_Overlay(null,{covers:table,status_html:to_enable?LOCALE.maketext("Enabling hook …"):LOCALE.maketext("Disabling hook …")});overlay.show();var success=function suc(){hook.enabled=to_enable?1:0;var row=DOM.getAncestorByTagName(clicked,"tr");if(to_enable){var attr=CPANEL.Y(row).one("span.enabled-off");attr.title=LOCALE.maketext("This hook is enabled.");CPANEL.util.set_text_content(clicked,LOCALE.maketext("Disable"));DOM.replaceClass(attr,"enabled-off","enabled-on");DOM.replaceClass(row,"hook-disabled","hook-enabled")}else{var attr=CPANEL.Y(row).one("span.enabled-on");attr.title=LOCALE.maketext("This hook is disabled.");CPANEL.util.set_text_content(clicked,LOCALE.maketext("Enable"));DOM.replaceClass(attr,"enabled-on","enabled-off");DOM.replaceClass(row,"hook-enabled","hook-disabled")}};CPANEL.api({func:"edit_hook",data:{id:id,enabled:to_enable?1:0},catch_api_errors:true,callback:CPANEL.ajax.build_page_callback(success,{hide_on_return:overlay})})}var sorted_desc={};function reverse_sort(category,clicked){var desc=sorted_desc[category]=!sorted_desc[category];apply_sort(category,desc);if(desc){DOM.replaceClass(clicked,"sorted-asc","sorted-desc")}else{DOM.replaceClass(clicked,"sorted-desc","sorted-asc")}}function apply_sort(category,reverse){var row_cat_stg_cache={};var tbodies=CPANEL.Y.all("#"+category+"-table tbody");var cur_category;var row_sort_event=function(r){if(DOM.hasClass(r,"event-stage")){return row_cat_stg_cache[r.id]=cur_category+"-"+CPANEL.util.get_text_content(CPANEL.Y(r).one(".event")).replace(/:/g,"-")}else{var id=r.id.replace(/^hook-/,"");var js_hook=get_hook_by_id(id);return row_cat_stg_cache[r.id]=js_hook.category+"-"+js_hook.event.replace(/:/g,"-")}};row_sort_event.reverse=reverse;var row_sort_stage=function(r){var stage;if(DOM.hasClass(r,"event-stage")){stage=CPANEL.util.get_text_content(CPANEL.Y(r).one(".stage"))}else{var id=r.id.replace(/^hook-/,"");var js_hook=get_hook_by_id(id);stage=js_hook.stage}var cat_stg=row_cat_stg_cache[r.id];return stage_orders[cat_stg].indexOf(stage)};var row_sort_is_parent=function(r){return DOM.hasClass(r,"event-stage")?0:1};tbodies.forEach((function(tb){cur_category=tb.parentNode.id.replace(/-table$/,"");var rows=CPANEL.Y(tb).all("tr");rows.sort_by(row_sort_event,row_sort_stage,row_sort_is_parent);rows.forEach((function(r){tb.appendChild(r)}));stripe_tbody(tb)}))}function _make_key(category,event,stage){if(!event&&!stage){var hook=get_hook_by_id(arguments[0]);category=hook.category;event=hook.event;stage=hook.stage}return[category,event,stage].join("-").replace(/:/g,"-")}function get_hook_and_siblings_by_id(id){var hook=get_hook_by_id(id);return hooks_by_key[_make_key(hook.category,hook.event,hook.stage)]}String.prototype.html_smart_break=function(){return this.replace(/(::|\-)/g,"$1&shy;")};var shown={};var overlay_manager=new YAHOO.widget.OverlayManager;function show_details(id,src){var hook_data=get_hook_by_id(id);if(shown[id]){return}hook_data=YAHOO.lang.augmentObject({},hook_data);hook_data.hook=hook_data.hook.html_encode();hook_data.notes=hook_data.notes||"";hook_data.stage_description=stage_descriptions[_make_key(hook_data.id)];for(var attr in{rollback:0,check:0}){if(hook_data[attr]){hook_data[attr]=hook_data[attr].html_encode()}}for(var attr in hook_data){if(typeof hook_data[attr]==="string"){hook_data[attr]=String(hook_data[attr]).html_smart_break()}}var dialog=shown[id]=new CPANEL.ajax.Common_Action_Dialog(null,{close:true,modal:false,clicked_element:src,errors_in_notice_box:true,show_status:true,status_template:LOCALE.maketext("Saving …"),header_html:LOCALE.maketext("View/Edit Hook Details"),form_template:"details_template",form_template_variables:hook_data,zIndex:1,api_calls:[{api_function:"edit_hook",data:function(){return{id:id,notes:this.form.hook_notes.value.trim()}},success_function:function(){var notes=this.form.hook_notes.value.trim();var cell=CPANEL.Y("hook-"+id).one("td.notes");CPANEL.util.set_text_content(cell,notes);get_hook_by_id(id).notes=notes}}]});var buttons=dialog.cfg.getProperty("buttons");buttons[0].text=LOCALE.maketext("Save");buttons[1].text=LOCALE.maketext("Close");dialog.render();overlay_manager.register(dialog);EVENT.on(dialog.element,"click",dialog.focus,dialog,true);DOM.addClass(dialog.element,"details-panel");DOM.addClass(dialog.element,hook_data.enabled?"enabled-on":"enabled-off");DOM.addClass(dialog.element,hook_data.blocking?"blocking-on":"blocking-off");DOM.addClass(dialog.element,hook_data.escalateprivs?"escalate-on":"escalate-off");DOM.addClass(dialog.element,hook_data.check?"check-on":"check-off");DOM.addClass(dialog.element,hook_data.rollback?"rollback-on":"rollback-off");dialog.after_hideEvent.subscribe((function(){if(dialog.cfg){dialog.destroy()}}));dialog.destroyEvent.subscribe((function(e){delete shown[id]}));dialog.animated_show()}function delete_prompt(id,src){var hook_data=get_hook_by_id(id);var dialog=new CPANEL.ajax.Common_Action_Dialog(null,{close:true,clicked_element:src,show_status:true,status_template:LOCALE.maketext("Deleting hook …"),header_html:LOCALE.maketext("Delete a Hook"),form_template:"delete_prompt_template",form_template_variables:{hook:hook_data.hook.html_encode(),insertion:[hook_data.category,hook_data.event,hook_data.stage].join("::").html_encode()},api_calls:[{api_function:"delete_hook",data:{id:id},success_function:function(){var hooks=get_hook_and_siblings_by_id(id);var index=hooks.indexOf(hook_data);hooks.splice(index,1);var row=DOM.get("hook-"+id);var tbody=row.parentNode;tbody.removeChild(row);stripe_tbody(tbody);var children=tbody.childNodes;var has_children=false;for(var i=0;i<children.length;i++){if(children[i].nodeType===1){has_children=true;break}}if(!has_children){var container=DOM.get(hook_data.category+"-container");container.parentNode.removeChild(container);if(!CPANEL.Y.all(".category-container").length){var hooks_area=CPANEL.Y.one("#hooks_section");hooks_area.parentNode.removeChild(hooks_area);no_hooks_notice.animated_show();CPANEL.animate.fade_out(CPANEL.Y.one(".legend-box"))}}}}]});dialog.render();DOM.addClass(dialog.element,"delete-prompt");dialog.animated_show()}var RIGHT_ARROW=String.fromCharCode(9654);var DOWN_ARROW=String.fromCharCode(9660);function toggle_hooks(key,clicked){var rows=CPANEL.Y.all("tr.hook."+key+"-hook");if(rows.length){if(DOM.getStyle(rows[0],"display")==="none"){rows.forEach((function(r){DOM.setStyle(r,"display","")}));CPANEL.util.set_text_content(clicked,DOWN_ARROW)}else{rows.forEach((function(r){DOM.setStyle(r,"display","none")}));CPANEL.util.set_text_content(clicked,RIGHT_ARROW)}}stripe_tbody(DOM.getAncestorByTagName(clicked,"tbody"))}function expand_all(){CPANEL.Y.all(".toggle-link").forEach((function(lk){CPANEL.util.set_text_content(lk,DOWN_ARROW)}));update_table_search()}function collapse_all(){CPANEL.Y.all("tr.hook").forEach((function(r){DOM.setStyle(r,"display","none")}));CPANEL.Y.all(".toggle-link").forEach((function(lk){CPANEL.util.set_text_content(lk,RIGHT_ARROW)}))}function update_table_search(){var search_box=DOM.get("table_search_box");if(!search_box){return}var needle=new RegExp(search_box.value.trim().regexp_encode(),"i");var rows=CPANEL.Y.all("#hooks_section tbody tr");var containers_shown=CPANEL.Y.all(".category-container").length;var cur_table;var cur_table_matches;var show_or_hide_table=function(){if(cur_table){DOM.setStyle(cur_table,"display",cur_table_matches?"":"none");if(!cur_table_matches){containers_shown--}}};var last_event_row,rows_length=rows.length;for(var r=0;r<rows_length;r++){var row=rows[r];if(row.sectionRowIndex===0){show_or_hide_table();cur_table=DOM.getAncestorByClassName(row,"category-container");cur_table_matches=false}var show_this_row=needle.test(CPANEL.util.get_text_content(row));rows[r]=[row,show_this_row];if(DOM.hasClass(row,"event-stage")){last_event_row=rows[r]}else if(show_this_row){last_event_row[1]=true;CPANEL.Y(last_event_row[0]).one(".toggle-link").innerHTML=DOWN_ARROW}if(show_this_row){cur_table_matches=true}}show_or_hide_table();for(r=0;r<rows_length;r++){DOM.setStyle(rows[r][0],"display",rows[r][1]?"":"none")}DOM.setStyle("no_hooks_match_message","display",containers_shown?"none":"");CPANEL.Y.all("#hooks_section tbody").forEach(stripe_tbody)}EVENT.onDOMReady(update_table_search);function move_up(id,clicked){return move_offset(id,-1,clicked)}function move_down(id,clicked){return move_offset(id,1,clicked)}Array.prototype.move_one=function(idx,offset){if(this.length<2){return 0}if(offset===0){return idx}var new_index=(idx+offset)%this.length;if(new_index<0){new_index+=this.length}var item=this.splice(idx,1)[0];this.splice(new_index,0,item);return new_index};function move_offset(id,offset,clicked){clicked.blur();var the_hook=get_hook_by_id(id);var hooks=get_hook_and_siblings_by_id(id);var hook_ids=hooks.map((function(h){return h.id}));var cur_index=hook_ids.indexOf(id);hook_ids.move_one(cur_index,offset);var success=function(){hooks.sort_by((function(h){return hook_ids.indexOf(h.id)}));_reorder_rows_by_id(hook_ids)};var table=DOM.getAncestorByTagName(clicked,"table");var overlay=new CPANEL.ajax.Page_Progress_Overlay(null,{covers:table,status_html:LOCALE.maketext("Reordering hooks …")});overlay.show();CPANEL.api({func:"reorder_hooks",data:{ids:hook_ids.join(",")},catch_api_errors:true,callback:CPANEL.ajax.build_page_callback(success,{hide_on_return:overlay})})}function _reorder_rows_by_id(ordered_ids){var last=DOM.get("hook-"+ordered_ids[ordered_ids.length-1]);var tbody=last.parentNode;ordered_ids.forEach((function(id,idx){var row=DOM.get("hook-"+id);if(row!==last){tbody.removeChild(row)}var up_link=CPANEL.Y(row).one("a.up-link");var down_link=CPANEL.Y(row).one("a.down-link");if(idx===0){DOM.addClass(row,"first-hook");up_link.title=LOCALE.maketext("Move this hook to the bottom.")}else{DOM.removeClass(row,"first-hook");up_link.title=LOCALE.maketext("Move this hook up.")}if(idx===ordered_ids.length-1){DOM.addClass(row,"final-hook");down_link.title=LOCALE.maketext("Move this hook to the top.")}else{DOM.removeClass(row,"final-hook");down_link.title=LOCALE.maketext("Move this hook down.")}if(row!==last){tbody.insertBefore(row,last)}}));stripe_tbody(tbody)}
Back to Directory File Manager