2013-04-19 19 views
6

MediaTile bir RichTextContent form öğesine (ckeditor veya tinyMCE) bir feincms eklemek için standart bir çözüm var mı? Belgelerdeki herhangi bir dosyayı bulamadım ... Artık kullanıcıların medialib'a bir url yapıştırıp kopyalayıp sayfaya yapıştırıp yapıştırması gerekiyor ...RichTextContent içinde FeFip MediaFile

cevap

2

: Eğer her zaman (ya da bazen) kendi içerik türünü yazmak, RichTextContent ile ilişkili bir MediaFile gerekir. Üzerine yazma dismissRelatedLookupPopup biraz hackish, ancak Django daha iyi bir çözüm için destek eksikliği gibi görünüyor.

GÜNCELLEME: Bu ticket, açılır pencereyi açıklar.

'ckeditor''un bulunduğu statik klasörünüzde, bir eklenti oluşturun, ör.

/app/ 
    /static/ 
     /app/ 
      /js/ 
       /ckeditor/ 
        /plugins/ 
         /feincms/ 
          /images/ 
           mediaFile.png 
          plugin.js 

/** 
* Basic sample plugin inserting a feincms mediaFile into the CKEditor editing area. 
*/ 

// Register the plugin with the editor. 
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.plugins.html 
CKEDITOR.plugins.add('feincms', 
{ 
    // The plugin initialization logic goes inside this method. 
    // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.pluginDefinition.html#init 
    init: function(editor) 
    { 
     // Define an editor command that inserts a feincms. 
     // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#addCommand 
     editor.addCommand('insertMediaFile', 
      { 
       // Define a function that will be fired when the command is executed. 
       // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.commandDefinition.html#exec 
       exec : function(editor) 
       { 
        // Define your callback function 
        function insertMediaFile(imageUrl) { 
         // Insert the imageUrl into the document. Style represents some standard props. 
         // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#insertHtml 
         editor.insertHtml('<img src="/media/' + imageUrl + '" style="float:left;margin-right:10px;margin-bottom:10px;width:200px;" />'); 
        } 

        var imageUrl; 
        window.dismissRelatedLookupPopup = function (win, chosenId) { 
         imageUrl = $(win.document.body).find('#_refkey_' + chosenId).val(); 
         insertMediaFile(imageUrl); 
         var name = windowname_to_id(win.name); 
         var elem = document.getElementById(name); 
         if (elem) { 
          if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { 
           elem.value += ',' + chosenId; 
          } else { 
           document.getElementById(name).value = chosenId; 
          } 
         } 
         win.close(); 
        }; 

        var win = window.open('/admin/medialibrary/mediafile/?pop=1', 'id_image', 'height=500,width=800,resizable=yes,scrollbars=yes'); 
        win.focus(); 
       } 
      }); 
     // Create a toolbar button that executes the plugin command. 
     // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.html#addButton 
     editor.ui.addButton('feincms', 
     { 
      // Toolbar button tooltip. 
      label: 'Insert MediaFile', 
      // Reference to the plugin command name. 
      command: 'insertMediaFile', 
      // Button's icon file path. 
      icon: this.path + 'images/mediaFile.png' 
     }); 
    } 
}); 

ckeditor init komut, örneğin için eklenti eklemek için emin olun plugin.js

{ name: 'insert', items : [ 'feincms','HorizontalRule','SpecialChar' ] }, 
+0

Konuyla ilgili olarak geldim ... – user2298943

0

Bildiğim kadarıyla değil. Bunun için kendi uygulama oluşturmak gerekecek

from feincms.module.medialibrary.fields import MediaFileForeignKey 
from feincms.content.richtext.models import RichTextContent 


class RichTextAndMFContent(RichTextContent): 
    mf = MediaFileForeignKey(MediaFile) 

    class Meta: 
     abstract = True 

    def render(self, **kwargs): 
     ... 
+0

Teşekkürler ama bu soruya gerçekten bir cevap bulamadı – user2298943