2009-11-05 20 views
6

Bunu yapmayı kim başarabildi?Wmd editörüne nasıl yükleme yardımcı programı eklenir?

+0

Biraz daha spesifik olabilir misiniz? Önceden oluşturulmuş bir yardımcı program eklemeye mi çalışıyorsunuz yoksa kendi yazınızı mı yazmaya çalışıyorsunuz? –

+0

Her ikisi de benim için yapabilir. – Mask

+0

KİS'in hangi sürümünde önemli? –

cevap

0

WMD'nin kontrol paneline bir düğme ekleyin. my version yılında italicButton.XShift
, fonksiyon sınıfında SpritedButtonRow olduğunu ve inşa denir: Aşağıdaki dize için
Arama butonları ekleniyor yer bulmak için.

kurulum ve textOp öznitelikleri yok sayılır. XShift, WMD ile birlikte gelen css sprite içindeki düğme görüntüsünün pozisyonudur, bunun yerine, düğmeye bir sınıf verir ve sınıfta arka plan görüntüsünü belirtir. Ardından, yapmanız gerekenleri yapacak olannolu düğmeye onclick olayını ekleyin.
Ancak, bir yükleme düğmesinin metin düzenleyicide olması gerektiğini düşünmüyorum, mantıklı değil.

3

Util.prompt dosyasını kendi jquery.dialog yöntemimle değiştirerek bunu başardım. İstemi fonksiyonu bir parametreyi geri çağırma olarak alır ve bu da bir ikame değiştirme işlemini kolaylaştırır.

if (isImage) { 
    // OLD: util.prompt(imageDialogText, imageDefaultText, makeLinkMarkdown); 
    // WMD_IMAGE_GALLERY_URL loaded from a global settings elsewhere 
    util.imageGallery(WMD_IMAGE_GALLERY_URL, makeLinkMarkdown); 
} 
else { 
    util.prompt(linkDialogText, linkDefaultText, makeLinkMarkdown); 
} 

İlgilenirsen

, bu konuda bir blog entry yazdı (resimli!) Biraz daha örnek kod yanı bu uygulanmasında karşılaşılan sorunlar/çözümler bazıları vardır ki.

+0

Bunun için kod alabilir miyim? :) – Moon

+0

Ayrıca, stackoverflow göre bir yükleme uygulamak için gereken tüm bu için kod görmek çok istiyorum. – marcusstarnes

1

Aşağıdaki kesmek, AJAX dosya yüklemeleri gerçekleştirmek için jQuery, jQuery UI ve Mike Alsup's jQuery Form Plugin kullanımını gerektirir. Hack, bağlantılı sürümlerle çalışır (jQ 1.7.2 ve jQUI 1.8.20). Diğer sürümlerle uyumluluğu garanti edemem. senin <head> yılında


, bağımlılıklar dahil etmek gerekir:

<script type='text/javascript' src='jquery.min.js'></script> 
<link href='theme/jquery-ui.css' rel='stylesheet' type='text/css' /> 
<script type='text/javascript' src='jquery-ui.js'></script> 
<script type='text/javascript' src='wmd/showdown.js'></script> 
<script type='text/javascript' src='wmd/wmd.js'></script> 
<link type='text/css' rel='stylesheet' href='wmd/wmd.css'/> 
<script type='text/javascript' src='jquery.form.js'></script> 

Biz aslında wmd.js için tek bir değişiklik yapmak gerekir.
var form = doc.createElement("form");
hemen bu hattı takip için, formu bir kimlik atayın İçeride gidip (+ f ctrl) arama dialogform yapacağız: form.id = "dialogform";


Şimdi ön ucunda, çalıştırın:

$(document).ready(function(){ 
    $("#wmd-image-button").live("click",function(){ 
     setTimeout(function(){ 
      $(".wmd-prompt-dialog").css({"opacity": "0", display: "none"}); 
     }, 100); 
     var $div = $("<div>"); 
     var $form = $("<form>").attr({action: "submit_image.php", method: "post"}) 
     var $file = $("<input/>").attr({type: "file", name: "image"}); 
     var $name = $("<input/>").attr({type: "text", name: "name", placeholder: "Name"}); 
     var $submit = $("<input/>").attr("type", "submit"); 
     $form.append($name, $file, $submit).ajaxForm(function(r) { 
      r = $.parseJSON(r); 
      if(r.success){ 
       $("#dialogform input[type='text']").val(r.filename); 
       $("#dialogform input[value='OK']").trigger("click"); 
       $div.dialog("close"); 
      } 
     }); 
     $div.append($form).dialog({title: "Upload Image"}); 
    }); 
    $("#wmd-link-button").live("click", function(){ 
     setTimeout(function(){ 
      $(".wmd-prompt-dialog").css("opacity", "1"); 
     }, 100); 
    }); 
}); 

sonrası jQuery 1.7.2 için yazılmıştır ve live() zamandan beri kullanılmadığından unutmayın.Eğer submit_image.php yılında


Ve arka uçta, jQuery daha yeni bir sürümü kullanıp kullanmadığınızı on() geçin: başlamanıza olacak

$f = $_FILES['image']; 
    $p = $_POST; 
    $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); 
    $detectedType = exif_imagetype($f['tmp_name']); 
    if(in_array($detectedType, $allowedTypes)){ 
     $pi = pathinfo($f['name']); 
     $ext = $pi['extension']; 
     $target = "img/" . strtolower(str_replace(" ", "-", $p['name'])) . "." . $ext; 
     if(move_uploaded_file($f['tmp_name'], $target)){ 
      $returnArr = array(
       "success" => true, 
       "filename" => site_url($target) 
      ); 
      echo json_encode($returnArr); 
     } 
     else echo json_encode(array("success" => false)); 
    } 
    else echo json_encode(array("success" => false, "msg" => "Invalid File Type.")); 

Umarım. Bu, birkaç yıl önce javascript becerilerimin alt parite olduğu yazılmıştır! Haha. Daha önce bunu bir blogda (şimdi öldü) adım adım talimatlar ve açıklamalar ile yaptım; gereksiz tüyler çok. Bu bağlantıyı dikkatime sunmak için @Kamiccolo'a teşekkürler. Canlandırmak için yol-arka-makineye danışmak zorunda kaldım.

+0

Sadece bir site dışı bağlantı bırakmakla kalmayıp daha fazla detaylandırır mısınız? akılda, o site öldü. En azından şu anda. – Kamiccolo

+0

teşekkürler @Kamiccolo - sabit. –

İlgili konular