Ignore:
Timestamp:
02/13/07 12:54:39 (12 years ago)
Author:
htanaka
Message:

fix #949 InsertImage? dialog can preview stripped url image.

Location:
trunk/modules/InsertImage
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/InsertImage/insert_image.html

    r694 r733  
    1616} 
    1717 
     18function resolveRelativeUrl(base, url){ 
     19        if(url.match(/^([^:]+\:)?\//)){ 
     20                return url; 
     21        } 
     22        else{ 
     23                var b = base.split("/"); 
     24                if(b[b.length - 1] == ""){ 
     25                        b.pop(); 
     26                } 
     27                var p = url.split("/"); 
     28                if(p[0] == "."){ 
     29                        p.shift(); 
     30                } 
     31                while(p[0] == ".."){ 
     32                        b.pop(); 
     33                        p.shift(); 
     34                } 
     35                return b.join("/") + "/" + p.join("/"); 
     36        } 
     37} 
     38 
    1839function Init() { 
    1940  __dlg_translate('Xinha'); 
     
    2344  document.getElementById("f_align").selectedIndex = 5; 
    2445  var param = window.dialogArguments; 
    25   if (param) { 
    26       document.getElementById("f_url").value = param["f_url"]; 
    27       document.getElementById("f_alt").value = param["f_alt"]; 
    28       document.getElementById("f_border").value = param["f_border"]; 
    29       document.getElementById("f_align").value = param["f_align"]; 
    30       document.getElementById("f_vert").value = param["f_vert"]; 
    31       document.getElementById("f_horiz").value = param["f_horiz"]; 
    32       window.ipreview.location.replace(param.f_url); 
     46  if (param["f_base"]) { 
     47      document.getElementById("f_base").value = param["f_base"]; 
     48  } 
     49  document.getElementById("f_url").value    = param["f_url"] ? param["f_url"] : ""; 
     50  document.getElementById("f_alt").value    = param["f_alt"] ? param["f_alt"] : ""; 
     51  document.getElementById("f_border").value = (typeof param["f_border"]!="undefined") ? param["f_border"] : ""; 
     52  document.getElementById("f_align").value  = param["f_align"] ? param["f_align"] : ""; 
     53  document.getElementById("f_vert").value   = (typeof param["f_vert"]!="undefined") ? param["f_vert"] : ""; 
     54  document.getElementById("f_horiz").value  = (typeof param["f_horiz"]!="undefined") ? param["f_horiz"] : ""; 
     55  if (param["f_url"]) { 
     56      window.ipreview.location.replace(resolveRelativeUrl(param.f_base, param.f_url)); 
    3357  } 
    3458  document.getElementById("f_url").focus(); 
     
    6892  var f_url = document.getElementById("f_url"); 
    6993  var url = f_url.value; 
     94  var base = document.getElementById("f_base").value; 
    7095  if (!url) { 
    7196    alert(i18n("You must enter the URL")); 
     
    7398    return false; 
    7499  } 
    75   window.ipreview.location.replace(url); 
     100  window.ipreview.location.replace(resolveRelativeUrl(base, url)); 
    76101  return false; 
    77102} 
     
    85110<!--- new stuff ---> 
    86111<form action="" method="get"> 
     112<input type="hidden" name="base" id="f_base"/> 
    87113<table border="0" width="100%" style="padding: 0px; margin: 0px"> 
    88114  <tbody> 
  • trunk/modules/InsertImage/insert_image.js

    r694 r733  
    4141{ 
    4242  var editor = this;    // for nested functions 
    43   var outparam = null; 
     43  var outparam; 
    4444  if ( typeof image == "undefined" ) 
    4545  { 
     
    5050    } 
    5151  } 
     52   
     53  var base; 
     54  if ( typeof editor.config.baseHref != 'undefined' && editor.config.baseHref !== null ) { 
     55    base = editor.config.baseHref; 
     56  } 
     57  else { 
     58    var bdir = window.location.toString().split("/"); 
     59    bdir.pop(); 
     60    base = bdir.join("/"); 
     61  } 
     62   
    5263  if ( image ) 
    5364  { 
    5465    outparam = 
    5566    { 
    56       f_base   : editor.config.baseHref, 
     67      f_base   : base, 
    5768      f_url    : Xinha.is_ie ? editor.stripBaseURL(image.src) : image.getAttribute("src"), 
    5869      f_alt    : image.alt, 
    5970      f_border : image.border, 
    6071      f_align  : image.align, 
    61       f_vert   : image.vspace, 
    62       f_horiz  : image.hspace, 
     72      f_vert   : (image.vspace!=-1 ? image.vspace : ""), //FireFox reports -1 when this attr has no value. 
     73      f_horiz  : (image.hspace!=-1 ? image.hspace : ""), //FireFox reports -1 when this attr has no value. 
    6374      f_width  : image.width, 
    6475      f_height : image.height 
    6576    }; 
    6677  } 
     78  else{ 
     79        outparam = 
     80        { 
     81      f_base   : base, 
     82      f_url    : ""       
     83        }; 
     84  } 
     85   
    6786  Dialog( 
    6887    editor.config.URIs.insert_image, 
     
    113132          case "f_alt": 
    114133            if (value) 
    115               img.alt = value 
     134              img.alt = value; 
    116135            else 
    117136              img.removeAttribute("alt"); 
     
    119138          case "f_border": 
    120139            if (value) 
    121               img.border = parseInt(value || "0") 
     140              img.border = parseInt(value || "0"); 
    122141            else 
    123142              img.removeAttribute("border"); 
     
    125144          case "f_align": 
    126145            if (value) 
    127               img.align = value 
     146              img.align = value; 
    128147            else 
    129148              img.removeAttribute("align"); 
     
    131150          case "f_vert": 
    132151            if (value) 
    133               img.vspace = parseInt(value || "0") 
     152              img.vspace = parseInt(value || "0"); 
    134153            else 
    135154              img.removeAttribute("vspace"); 
     
    137156          case "f_horiz": 
    138157            if (value) 
    139               img.hspace = parseInt(value || "0") 
     158              img.hspace = parseInt(value || "0"); 
    140159            else 
    141160              img.removeAttribute("hspace"); 
Note: See TracChangeset for help on using the changeset viewer.