Django

Code

Changeset 3555

Show
Ignore:
Timestamp:
08/11/06 08:57:28 (2 years ago)
Author:
clong
Message:

[per-object-permissions] Separated the AJAX javascript from the non-AJAX JS

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/per-object-permissions/django/contrib/admin/media/js/row_level_permission.js

    r3540 r3555  
    1 var add_row_level_permission = { 
    2         init: function() { 
    3            // Grab the elements we’ll need.                                                                                                                                       
    4            add_row_level_permission.form = document.getElementById("addRLPForm"); 
    5            add_row_level_permission.results_div = document.getElementById("rlpResults"); 
    6  
    7            // This is so we can fade it in later.                                                                                                                                 
    8            YAHOO.util.Dom.setStyle(add_row_level_permission.results_div, "opacity", 0); 
     1var row_level_permission = { 
    92         
    10            // Hijack the form.                                                                                                                                                    
    11            YAHOO.util.Event.addListener(add_row_level_permission.form, "submit", add_row_level_permission.submit_func); 
    12         }, 
    13          
    14         submit_func: function(e) { 
    15            YAHOO.util.Event.preventDefault(e); 
    16          
    17                 //TODO: Remove any error messages here 
    18          
    19            YAHOO.util.Connect.setForm(add_row_level_permission.form); 
    20          
    21            //Temporarily disable the form.                                                                                                                                        
    22            for(var i=0; i<add_row_level_permission.form.elements.length; i++) { 
    23               add_row_level_permission.form.elements[i].disabled = true; 
    24            } 
    25            var cObj = YAHOO.util.Connect.asyncRequest("POST",  
    26                                                                                 add_row_level_permission.form.action+"?ajax" ,  
    27                                                                                 add_row_level_permission.ajax_callback); 
    28         }, 
    29          
    30         ajax_callback: { 
    31       success: function(o) { 
    32                 var response_obj = eval('(' + o.responseText + ')'); 
    33                 // Set up the animation on the results div. 
    34                 var result_fade_out = null; 
    35                 if(response_obj.result) { 
    36                         result_fade_out = row_level_permission.output_success(response_obj.text, add_row_level_permission.results_div); 
    37                         var results=response_obj.results 
    38                         var new_rows = []; 
    39                         var table = row_level_permission.edit_table; 
    40                         for(var i=0; i<results.length; i++) { 
    41                                 row = add_row_level_permission.add_rlp_row(results[i].id, results[i].permission, results[i].hash); 
    42                                 var row_fade_in = new YAHOO.util.Anim(row, { 
    43                                                                  opacity: { from: 0, to: 100 }  
    44                                                                  }, 1, YAHOO.util.Easing.easeOut); 
    45                                 row_fade_in.onStart.subscribe(function() { 
    46                                 table.appendChild(row); 
    47                                 }); 
    48                                 row_fade_in.animate(); 
    49                         } 
    50                 } else { 
    51                         result_fade_out = row_level_permission.output_error(response_obj.text,  
    52                                                                                                                 add_row_level_permission.results_div); 
    53                 } 
    54                 for(var i=0; i<add_row_level_permission.form.elements.length; i++) 
    55                         add_row_level_permission.form.elements[i].disabled = false; 
    56                 result_fade_out.animate(); 
    57          }, 
    58        
    59       failure: function(o) { 
    60                         alert('An error has occurred'); 
    61                 for(var i=0; i<add_row_level_permission.form.elements.length; i++) 
    62                         add_row_level_permission.form.elements[i].disabled = false;              
    63       } 
    64    }, 
    65     
    66    add_rlp_row: function(id, permission, hash) { 
    67                 var emptyRow = document.getElementById('empty_editRLP'); 
    68                 var newRow = emptyRow.cloneNode(true); 
    69                 var form = YAHOO.util.Dom.getElementsByClassName('editRLPForm', 'form', newRow); 
    70                 form=form[0];  
    71                 form.owner.options.selectedIndex = add_row_level_permission.form.owner.selectedIndex; 
    72                 form.perm.options.selectedIndex = row_level_permission.find_in_select(form.perm, permission); 
    73                 form.negative.checked =add_row_level_permission.form.negative.checked; 
    74                 form.id = "editRLPForm-"+id; 
    75                 newRow.id = "editRLP-"+id; 
    76                  
    77                 var delete_link = YAHOO.util.Dom.getElementsByClassName('deleteLink', 'a', form); 
    78                 delete_link = delete_link[0]; 
    79                 delete_link.href = "../../../auth/row_level_permission/"+hash+"/delete/"; 
    80                  
    81                 var copy_link = YAHOO.util.Dom.getElementsByClassName('copyToNewLink', 'a', newRow); 
    82                 copy_link = copy_link[0]; 
    83                 copy_link.href = "javascript:row_level_permission.copyToNew("+id+")"; 
    84                  
    85                 form.action = "../../../auth/row_level_permission/"+hash+"/change/"              
    86  
    87                 row_level_permission.add_delete_listener(delete_link); 
    88                 row_level_permission.add_apply_listener(form); 
    89  
    90                 return newRow;  
    91    }, 
    92 }; 
    93  
    94 var row_level_permission = { 
    95         init: function() { 
    96                 row_level_permission.results_div = document.getElementById("rlpResults"); 
    97                 row_level_permission.edit_table = document.getElementById('current-rlpTable'); 
    98         }, 
    99          
    100         find_in_select: function(select,val) { 
    101                 options = select.options; 
    102                 for(var i=0; i<options.length; i++) { 
    103                         if(options[i].value==val) { 
    104                                 return i 
    105                         } 
    106                 } 
    107                 return -1; 
    108         }, 
    109          
    110         add_apply_listener: function(el) { 
    111                 YAHOO.util.Event.addListener( 
    112           el, 
    113           'submit', 
    114           function(e) { 
    115                         YAHOO.util.Event.preventDefault(e); 
    116                         row_level_permission.applyRLP(this.action, this); 
    117                   } 
    118         );       
    119         }, 
    120  
    121         add_delete_listener: function(el) { 
    122             YAHOO.util.Event.addListener( 
    123                   el, 
    124                   'click', 
    125                   function(e) { 
    126                                 YAHOO.util.Event.preventDefault(e); 
    127                                 row_level_permission.deleteRLP(this.href); 
    128                           } 
    129             ); 
    130         }, 
    131          
    132         deleteRLP: function(url) { 
    133                 var confirm_ans = confirm("Are you sure?"); 
    134             if(confirm_ans) 
    135                         var cObj = YAHOO.util.Connect.asyncRequest("POST",  
    136                                                                                 url+"?ajax" ,  
    137                                                                                 row_level_permission.delete_callback); 
    138                 return false;  
    139         }, 
    140          
    141         delete_callback: { 
    142                 success: function(o) 
    143                 { 
    144                         var response_obj = eval('(' + o.responseText + ')'); 
    145                         // Set up the animation on the results div. 
    146                         var result_fade_out = null; 
    147                         if(response_obj.result) { 
    148                                 result_fade_out = row_level_permission.output_success(response_obj.text, document.getElementById("rlpResults")); 
    149                                 var row_fade_out = new YAHOO.util.Anim('editRLP-'+response_obj.id, { 
    150                                                                  opacity: { from:100, to: 0 }  
    151                                                                  }, 1, YAHOO.util.Easing.easeOut); 
    152                                 row_fade_out.onComplete.subscribe(function() { 
    153                                         var row = document.getElementById('editRLP-'+response_obj.id); 
    154                                         var table = row_level_permission.edit_table; 
    155                                 table.removeChild(row); 
    156                                 }); 
    157                                 row_fade_out.animate(); 
    158                         } else { 
    159                                 result_fade_out = row_level_permission.output_errort(response_obj.text,  
    160                                                                                                                 row_level_permission.results_div); 
    161                         } 
    162                         result_fade_out.animate(); 
    163                 }, 
    164                 failure: function(o) 
    165                 { 
    166                         alert('An error has occurred'); 
    167                 } 
    168         }, 
    169          
    170         output_error: function(text, div){ 
    171                 YAHOO.util.Dom.replaceClass(div, "system-message", "errornote"); 
    172                 return row_level_permission.output_text(text, div); 
    173         }, 
    174  
    175         output_success: function(text, div){ 
    176                 YAHOO.util.Dom.replaceClass(div, "errornote", "system-message"); 
    177                 return row_level_permission.output_text(text, div); 
    178         }, 
    179          
    180         output_text: function (text, div) { 
    181                  var result_fade_out = new YAHOO.util.Anim(div, { 
    182                                               opacity: { to: 0 } 
    183                                            }, 0.25, YAHOO.util.Easing.easeOut); 
    184                         var success_message = document.createElement('p'); 
    185                         success_message.innerHTML = text; 
    186                         YAHOO.util.Dom.setStyle(div, 'display', 'block'); 
    187                         var result_fade_in = new YAHOO.util.Anim(div, { 
    188                                         opacity: { to: 1 } 
    189                                      }, 0.25, YAHOO.util.Easing.easeIn); 
    190                         result_fade_out.onComplete.subscribe(function() { 
    191                                     div.innerHTML = ''; 
    192                                     div.appendChild(success_message); 
    193                                     result_fade_in.animate(); 
    194                                  });     
    195                         return result_fade_out;                             
    196         }, 
    197          
    198         applyRLP: function(url, form) { 
    199                 YAHOO.util.Connect.setForm(form); 
    200                 var cObj = YAHOO.util.Connect.asyncRequest("POST",  
    201                                                                                 url+"?ajax" ,  
    202                                                                                 row_level_permission.apply_callback); 
    203                 return false;  
    204         }, 
    205          
    206         apply_callback: { 
    207                 success: function(o) 
    208                 { 
    209                         var response_obj = eval('(' + o.responseText + ')'); 
    210                         // Set up the animation on the results div. 
    211                         var result_fade_out = null; 
    212                         if(response_obj.result) { 
    213                                 result_fade_out = row_level_permission.output_success(response_obj.text, document.getElementById("rlpResults")); 
    214                                 var row_highlight_on = new YAHOO.util.ColorAnim('editRLP-'+response_obj.id, { 
    215                                                                  backgroundColor: { to: 'rgb(255, 255, 204)' }  
    216                                                                  }, 1); 
    217                                 var row_highlight_off = new YAHOO.util.ColorAnim('editRLP-'+response_obj.id, { 
    218                                                                  backgroundColor: { to: 'rgb(255, 255, 255)' }  
    219                                                                  }, 1); 
    220                                 row_highlight_on.onComplete.subscribe(function() { 
    221                                         row_highlight_off.animate(); 
    222                                         }); 
    223                                 row_highlight_on.animate();  
    224                         } else { 
    225                                 result_fade_out = row_level_permission.output_errort(response_obj.text,  
    226                                                                                                                 row_level_permission.results_div); 
    227                         } 
    228                         result_fade_out.animate(); 
    229                 }, 
    230                 failure: function(o) 
    231                 { 
    232                         alert('An error has occurred'); 
    233                 } 
    234         },       
    2353         
    2364        copyToNew: function (id) 
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/row_level_permission.html

    r3540 r3555  
    11{% load i18n admin_modify %} 
     2 
     3{% comment %}Start of AJAX{% endcomment %} 
    24{% include_admin_script "js/lib/YahooUI/yahoo/yahoo-debug.js" %} 
    35{% include_admin_script "js/lib/YahooUI/event/event-debug.js" %} 
     
    57{% include_admin_script "js/lib/YahooUI/dom/dom-debug.js" %} 
    68{% include_admin_script "js/lib/YahooUI/animation/animation-debug.js" %} 
    7 {% include_admin_script "js/lib/YahooUI/logger/logger-debug.js" %} 
     9{% include_admin_script "js/row_level_permission_ajax.js" %} 
     10{% comment %}End of AJAX{% endcomment %} 
     11 
    812{% include_admin_script "js/row_level_permission.js" %} 
    9 <link rel="stylesheet" type="text/css" href="/media/js/lib/YahooUI/logger/logger.css" /> 
    1013 
    11  
    12 <script type="text/javascript"> 
    13  
    14 function init() { 
    15         add_row_level_permission.init(); 
    16         row_level_permission.init(); 
    17          
    18         forms = document.forms; 
    19         for(var i=0; i<forms.length; i++) { 
    20                 forms[i].reset; 
    21         } 
    22          
    23         row_level_permission.add_delete_listener(YAHOO.util.Dom.getElementsByClassName( "deleteLink", 'a')); 
    24         row_level_permission.add_apply_listener(YAHOO.util.Dom.getElementsByClassName( "editRLPForm", 'form'));  
    25 } 
    26          
    27 YAHOO.util.Event.addListener(window, 'load', init); 
    28 </script> 
    2914 
    3015<h1>{% trans "Row Level Permissions" %}</h1>