/* 
 | 
 * ext-server_opensave.js 
 | 
 * 
 | 
 * Licensed under the Apache License, Version 2 
 | 
 * 
 | 
 * Copyright(c) 2010 Alexis Deveria 
 | 
 * 
 | 
 */ 
 | 
  
 | 
methodDraw.addExtension("server_opensave", { 
 | 
  callback: function() { 
 | 
  
 | 
    //var save_svg_action = 'extensions/filesave.php'; 
 | 
    //var save_png_action = 'extensions/filesave.php'; 
 | 
   
 | 
    // Create upload target (hidden iframe) 
 | 
    var target = $('<iframe name="output_frame" />').hide().appendTo('body'); 
 | 
   
 | 
    //methodDraw.setCustomHandlers({ 
 | 
    //  save: function(win, data) { 
 | 
    //    var svg = "<?xml version=\"1.0\"?>\n" + data; 
 | 
    //     
 | 
    //    var title = svgCanvas.getDocumentTitle(); 
 | 
    //    var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_'); 
 | 
    //     
 | 
    //    var form = $('<form>').attr({ 
 | 
    //      method: 'post', 
 | 
    //      action: save_svg_action, 
 | 
    //      target: 'output_frame' 
 | 
    //    })  .append('<input type="hidden" name="output_svg" value="' + encodeURI(svg) + '">') 
 | 
    //      .append('<input type="hidden" name="filename" value="' + filename + '">') 
 | 
    //      .appendTo('body') 
 | 
    //      .submit().remove(); 
 | 
    //  }, 
 | 
    //  pngsave: function(win, data) { 
 | 
    //    var issues = data.issues; 
 | 
    //     
 | 
    //    if(!$('#export_canvas').length) { 
 | 
    //      $('<canvas>', {id: 'export_canvas'}).hide().appendTo('body'); 
 | 
    //    } 
 | 
    //    var c = $('#export_canvas')[0]; 
 | 
    //     
 | 
    //    c.width = svgCanvas.contentW; 
 | 
    //    c.height = svgCanvas.contentH; 
 | 
    //    canvg(c, data.svg, {renderCallback: function() { 
 | 
    //      var datauri = c.toDataURL('image/png'); 
 | 
    //       
 | 
    //      var uiStrings = methodDraw.uiStrings; 
 | 
    //      var note = ''; 
 | 
    //       
 | 
    //      // Check if there's issues 
 | 
    //      if(issues.length) { 
 | 
    //        var pre = "\n \u2022 "; 
 | 
    //        note += ("\n\n" + pre + issues.join(pre)); 
 | 
    //      }  
 | 
    //       
 | 
    //      if(note.length) { 
 | 
    //        alert(note); 
 | 
    //      } 
 | 
    //       
 | 
    //      var title = svgCanvas.getDocumentTitle(); 
 | 
    //      var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_'); 
 | 
    //       
 | 
    //      var form = $('<form>').attr({ 
 | 
    //        method: 'post', 
 | 
    //        action: save_png_action, 
 | 
    //        target: 'output_frame' 
 | 
    //      })  .append('<input type="hidden" name="output_png" value="' + datauri + '">') 
 | 
    //        .append('<input type="hidden" name="filename" value="' + filename + '">') 
 | 
    //        .appendTo('body') 
 | 
    //        .submit().remove(); 
 | 
    //    }}); 
 | 
    // 
 | 
    //     
 | 
    //  } 
 | 
    //}); 
 | 
   
 | 
    // Do nothing if client support is found 
 | 
    if(window.FileReader) return; 
 | 
     
 | 
    var cancelled = false; 
 | 
   
 | 
    // Change these to appropriate script file 
 | 
    var open_svg_action = 'extensions/fileopen.php?type=load_svg'; 
 | 
    var import_svg_action = 'extensions/fileopen.php?type=import_svg'; 
 | 
    var import_img_action = 'extensions/fileopen.php?type=import_img'; 
 | 
     
 | 
    // Set up function for PHP uploader to use 
 | 
    methodDraw.processFile = function(str64, type) { 
 | 
      if(cancelled) { 
 | 
        cancelled = false; 
 | 
        return; 
 | 
      } 
 | 
     
 | 
      $('#dialog_box').hide(); 
 | 
     
 | 
      if(type != 'import_img') { 
 | 
        var xmlstr = svgCanvas.Utils.decode64(str64); 
 | 
      } 
 | 
       
 | 
      switch ( type ) { 
 | 
        case 'load_svg': 
 | 
          svgCanvas.clear(); 
 | 
          svgCanvas.setSvgString(xmlstr); 
 | 
          methodDraw.updateCanvas(); 
 | 
          break; 
 | 
        case 'import_svg': 
 | 
          svgCanvas.importSvgString(xmlstr); 
 | 
          methodDraw.updateCanvas();           
 | 
          break; 
 | 
        case 'import_img': 
 | 
          svgCanvas.setGoodImage(str64); 
 | 
          break; 
 | 
      } 
 | 
    } 
 | 
   
 | 
    // Create upload form 
 | 
    var open_svg_form = $('<form>'); 
 | 
    open_svg_form.attr({ 
 | 
      enctype: 'multipart/form-data', 
 | 
      method: 'post', 
 | 
      action: open_svg_action, 
 | 
      target: 'output_frame' 
 | 
    }); 
 | 
     
 | 
    // Create import form 
 | 
    var import_svg_form = open_svg_form.clone().attr('action', import_svg_action); 
 | 
     
 | 
    // Create image form 
 | 
    var import_img_form = open_svg_form.clone().attr('action', import_img_action); 
 | 
     
 | 
    // It appears necessory to rebuild this input every time a file is  
 | 
    // selected so the same file can be picked and the change event can fire. 
 | 
    function rebuildInput(form) { 
 | 
      form.empty(); 
 | 
      var inp = $('<input type="file" name="svg_file">').appendTo(form); 
 | 
       
 | 
       
 | 
      function submit() { 
 | 
        // This submits the form, which returns the file data using methodDraw.uploadSVG 
 | 
        form.submit(); 
 | 
         
 | 
        rebuildInput(form); 
 | 
        $.process_cancel("Uploading...", function() { 
 | 
          cancelled = true; 
 | 
          $('#dialog_box').hide(); 
 | 
        }); 
 | 
      } 
 | 
       
 | 
      if(form[0] == open_svg_form[0]) { 
 | 
        inp.change(function() { 
 | 
          // This takes care of the "are you sure" dialog box 
 | 
          methodDraw.openPrep(function(ok) { 
 | 
            if(!ok) { 
 | 
              rebuildInput(form); 
 | 
              return; 
 | 
            } 
 | 
            submit(); 
 | 
          }); 
 | 
        }); 
 | 
      } else { 
 | 
        inp.change(function() { 
 | 
          // This submits the form, which returns the file data using methodDraw.uploadSVG 
 | 
          submit(); 
 | 
        }); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    // Create the input elements 
 | 
    rebuildInput(open_svg_form); 
 | 
    rebuildInput(import_svg_form); 
 | 
    rebuildInput(import_img_form); 
 | 
  
 | 
    // Add forms to buttons 
 | 
    $("#tool_open").show().prepend(open_svg_form); 
 | 
    $("#tool_import").show().prepend(import_svg_form); 
 | 
    $("#tool_image").prepend(import_img_form); 
 | 
  } 
 | 
}); 
 |