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
6
A
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
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
Konuyla ilgili olarak geldim ... – user2298943