Changeset 1246


Ignore:
Timestamp:
02/20/10 13:26:13 (8 years ago)
Author:
gogo
Message:

Add attributes editing for FileManager? mode of MootoolsFileManager?
ticket:1502

Location:
trunk/plugins/MootoolsFileManager
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/MootoolsFileManager/MootoolsFileManager.FileManager.js

    r1245 r1246  
    6464          f_href : '', 
    6565          f_title : '', 
    66           f_target : '', 
    67           f_usetarget : editor.config.makeLinkShowsTarget, 
     66          f_target : '',           
     67          f_type: '', 
    6868          baseHref: editor.config.baseHref 
    6969      }; 
     
    7474          f_href   : Xinha.is_ie ? link.href : link.getAttribute("href"), 
    7575          f_title  : link.title, 
    76           f_target : link.target, 
    77           f_usetarget : editor.config.makeLinkShowsTarget, 
     76          f_target : link.target,           
     77          f_type   : link.type ? link.type : '', 
    7878          baseHref: editor.config.baseHref 
    7979      }; 
     
    9191        selectable:     true, 
    9292        uploadAuthData: this.editor.config.MootoolsFileManager.backend_data, 
    93         onComplete:     function(path, file, params) { self.FileManagerReturn(path,file,params); } 
    94         // @TODO : Add support to pass in the existing href, title etc... 
     93        onComplete:     function(path, file) { self.FileManagerReturn(path,file); }, 
     94        onDetails:      function(details)  
     95                        {                                                  
     96                          this.info.adopt(self.FileManagerAttributes(details));  
     97                          return true; 
     98                        }, 
     99        onHidePreview:  function() 
     100                        {                         
     101                          $(self.FileManagerAttributes().table).dispose(); 
     102                          return true; 
     103                        } 
    95104      });        
    96105    } 
     
    100109 
    101110// Take the values from the file selection and make it (or update) a link 
    102 MootoolsFileManager.prototype.FileManagerReturn = function(path, file, param) 
     111MootoolsFileManager.prototype.FileManagerReturn = function(path, file) 
    103112{ 
    104113  var editor = this.editor; 
    105114  var a      = this.current_link; 
    106115   
    107   if (!param) 
    108   { 
    109     param =  { f_href: path, f_title: '', f_target: '' } 
    110   } 
    111    
     116  var param = this.FileManagerAttributes();   
     117  param.f_href = path; 
     118     
    112119  if (!a) 
    113120  { 
     
    152159    return false; 
    153160  } 
    154   // @TODO: Add support to mfm for specifying target and title 
     161   
     162  a.type = param.f_type.trim(); 
    155163  a.target = param.f_target.trim(); 
    156164  a.title = param.f_title.trim(); 
     
    159167}; 
    160168 
     169/** Return a DOM fragment which has all the fields needed to set the 
     170 *  attributes for a link given a structure of initial values. 
     171 *  
     172 *  OR return a structure of values taken from the currently table. 
     173 */ 
     174  
     175MootoolsFileManager.prototype.FileManagerAttributes = function (details) 
     176{ 
     177 
     178  var self = this; 
     179  self._LastFileDetails = details; 
     180   
     181  function f(name) 
     182  { 
     183    var e = self._FileManagerAttributesTable.getElementsByTagName('input'); 
     184    for(var i = 0; i < e.length; i++) 
     185    { 
     186      if(e[i].name == name) return e[i]; 
     187    } 
     188     
     189    var e = self._FileManagerAttributesTable.getElementsByTagName('select'); 
     190    for(var i = 0; i < e.length; i++) 
     191    { 
     192      if(e[i].name == name) return e[i]; 
     193    } 
     194     
     195    return null;     
     196  } 
     197   
     198  function s(name, value) 
     199  { 
     200    for(var i = 0; i < f(name).options.length; i++) 
     201    { 
     202      if(f(name).options[i].value == value)  
     203      { 
     204       // f(name).options[i].selected = true; 
     205        f(name).selectedIndex = i; 
     206        return true; 
     207      } 
     208    } 
     209    return false; 
     210  } 
     211   
     212  if(!this._FileManagerAttributesTable) 
     213  { 
     214    this._FileManagerAttributesTable = (function() { 
     215      var div     = document.createElement('div'); 
     216       
     217      var h2  = document.createElement('h2'); 
     218      h2.appendChild(document.createTextNode('Link Attributes'));             
     219      div.appendChild(h2); 
     220             
     221      var table = document.createElement('table'); 
     222      div.appendChild(table); 
     223       
     224      table.className = 'filemanager-extended-options'; 
     225      var tbody = table.appendChild(document.createElement('tbody')); 
     226       
     227      { // Title 
     228        var tr    = tbody.appendChild(document.createElement('tr')); 
     229        var th    = tr.appendChild(document.createElement('th')); 
     230        var label = th.appendChild(document.createTextNode('Title:')); 
     231         
     232        var td    = tr.appendChild(document.createElement('td')); 
     233        var input = td.appendChild(document.createElement('input')); 
     234         
     235        td.colSpan   = 6; 
     236        input.name   = 'f_title'; 
     237        input.type = 'text'; 
     238        th.className = td.className = 'filemanager-f_title';       
     239      } 
     240       
     241      { // Content Type 
     242        var tr    = tbody.appendChild(document.createElement('tr')); 
     243        var th    = tr.appendChild(document.createElement('th')); 
     244        var label = th.appendChild(document.createTextNode('Type:')); 
     245         
     246        var td    = tr.appendChild(document.createElement('td')); 
     247        var input = td.appendChild(document.createElement('input')); 
     248         
     249        td.colSpan   = 6; 
     250        input.name   = 'f_type'; 
     251        input.type = 'text'; 
     252        th.className = td.className = 'filemanager-f_type';       
     253      } 
     254            
     255      { // Target 
     256        var tr    = tbody.appendChild(document.createElement('tr')); 
     257         
     258        { // Target 
     259          var th    = tr.appendChild(document.createElement('th')); 
     260          var label = th.appendChild(document.createTextNode('Open In:')); 
     261           
     262          var td    = tr.appendChild(document.createElement('td')); 
     263          td.colSpan = 2; 
     264          var input = td.appendChild(document.createElement('select')); 
     265           
     266          input.name   = 'f_target';           
     267          input.options[0] = new Option(''); 
     268          input.options[1] = new Option('New Window', '_blank'); 
     269          input.options[2] = new Option('Top Frame', '_top'); 
     270          input.options[3] = new Option('Other Frame:', ''); 
     271           
     272          Xinha._addEvent(input, 'change', function() 
     273          {                     
     274            if(f('f_target').selectedIndex == 3) 
     275            { 
     276              f('f_otherTarget').style.visibility = 'visible'; 
     277            } 
     278            else 
     279            { 
     280              f('f_otherTarget').style.visibility = 'hidden'; 
     281            } 
     282          }); 
     283           
     284          var input = td.appendChild(document.createElement('input')); 
     285          input.name   = 'f_otherTarget'; 
     286          input.size = 7;     
     287          input.type = 'text';      
     288          input.style.visibility = 'hidden'; 
     289           
     290          th.className = td.className = 'filemanager-f_target';               
     291        }                       
     292      } 
     293             
     294      return div; 
     295    })();         
     296  } 
     297   
     298  if(this.current_attributes) 
     299  { 
     300    f('f_title').value    = this.current_attributes.f_title; 
     301    f('f_type').value     = this.current_attributes.f_type; 
     302     
     303    if(this.current_attributes.f_target) 
     304    { 
     305      if(!s('f_target', this.current_attributes.f_target)) 
     306      { 
     307        f('f_target').selectedIndex = 3; 
     308        f('f_otherTarget').value = this.current_attributes.f_target; 
     309      }      
     310      else 
     311      { 
     312        f('f_otherTarget').value = ''; 
     313      } 
     314    } 
     315     
     316    this.current_attributes = null; 
     317  } 
     318   
     319  // If no details were supplied, we return the current ones 
     320  if(!details)  
     321  { 
     322    var details = { 
     323      f_title:  f('f_title').value, 
     324      f_type:  f('f_type').value, 
     325      f_target: f('f_target').selectedIndex < 3 ? f('f_target').options[f('f_target').selectedIndex].value : f('f_otherTarget').value, 
     326       
     327      table: this._FileManagerAttributesTable 
     328    } 
     329     
     330    return details; 
     331  } 
     332   
     333  // If details were supplied, we set the appropriate ones.     
     334  if(details.mime) f('f_type').value = details.mime; 
     335   
     336  f('f_target').style.visibility = ''; // Ensure that the select hasn't been hidden by an overlay and not put back 
     337   
     338  if(f('f_target').selectedIndex == 3) 
     339  { 
     340    f('f_otherTarget').style.visibility = 'visible'; 
     341  } 
     342  else 
     343  { 
     344    f('f_otherTarget').style.visibility = 'hidden'; 
     345  } 
     346   
     347  return this._FileManagerAttributesTable; 
     348}; 
  • trunk/plugins/MootoolsFileManager/MootoolsFileManager.ImageManager.js

    r1245 r1246  
    325325        } 
    326326      } 
    327              
    328       return table; 
     327       
     328      var div = document.createElement('div'); 
     329      var h2 = document.createElement('h2'); 
     330      h2.appendChild(document.createTextNode('Image Attributes')); 
     331      div.appendChild(h2); 
     332      div.appendChild(table); 
     333      return div; 
    329334    })(); 
    330335     
     
    440445          var new_size = self.ScaleImage(details, {width: f('f_width').value, height: f('f_height').value}); 
    441446           
    442           f('f_width').value = new_size.width; 
    443           f('f_height').value = new_size.height; 
     447          f('f_width').value = f('f_width').value   ? new_size.width : ''; 
     448          f('f_height').value = f('f_height').value ? new_size.height : ''; 
    444449        } 
    445450      }, 
Note: See TracChangeset for help on using the changeset viewer.