/* Copyright (c) 2006-2007, ePages GmbH All Rights Reserved. epages.cartridges.de_epages.mediagallery.widget.Toolmediagallery $Revision: 1.51 $ */ dojo.provide("epages.cartridges.de_epages.mediagallery.widget.Toolmediagallery"); dojo.require('epages.widget.LocalizedWidget'); dojo.require("epages.browser"); dojo.require("epages.html.element"); dojo.declare( "epages.cartridges.de_epages.mediagallery.widget.Toolmediagallery", [epages.widget.LocalizedWidget], { /** * public properties */ attributeName : '', // String - Attribute name (still in use???) storeRoot : epages.vars.StoreRoot, // String - epages StoreRoot e.g. /WebRoot/Store siteId : epages.vars.SiteID, // String - Site id url : '?', // String - request url isTinyMCE : "false", // Boolean - flag: use mediagalllery to insert into tinymce multiSelect : "true", // Boolean - media gallery option: enable multiselect onApply : "", // Function - media gallery option: apply function applyButtonLabel: "", // String - media gallery option: label text for apply button validFileTypes : "", // String - media gallery option: filter file extension list - show only these opener : '', // String - flag to define where it is opend from , passed to mediagallery /** * constants */ MEDIAGALLERY_OFFSET_X: 130, // [const] Integer - X Offset (still in use???) MEDIAGALLERY_OFFSET_Y: 130, // [const] Integer - Y Offset (still in use???) /** * private properties */ templateType : "standard", // String - seleced template defaultTemplateType: "standard", // [readonly] String - default template templatePath : dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/Toolmediagallery.html'), // String - template path + filename translationName : dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/translation'), // String - translation path + filename (without file extension) _templateMapping : { 'standard' : {templatePath: dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/Toolmediagallery.html')}, 'icon' : {templatePath: dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/ToolmediagalleryIcon.html')}, 'button' : {templatePath: dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/ToolmediagalleryButton.html')}, 'invisible' : {templatePath: dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget', 'templates/ToolmediagalleryInvisible.html')} }, // [protected] Object - hash which associates templateType key with template filename _tinyMceSelection : undefined, // [protected] TinyMceSelection - current selection in tiny mce editor /** * widget properties */ imagePath : dojo.moduleUrl('dijit', 'themes/epages/images'), // String - image path postMixInProperties: function(){ // summary: initialize values this._templateDirectory = dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget' , 'templates'); // toolmediagallery as tiny mce button this.isTinyMCE = (this.isTinyMCE == 'true' || this.isTinyMCE == '1'); this.inherited("postMixInProperties", arguments); }, postCreate : function() { // summary: initialize values / adjust nodes this.inherited("postCreate", arguments); // tinymce button display settings if(this.isTinyMCE && this.imageNode){ this.imageNode.style.margin="2px"; } this._appendEvents(); }, /** * private methods */ _appendEvents: function() { // summary: open gallery // tags: callback var self = this; jQuery.ready({ plugin:"de_epages.mediagallery.ui.filemanagerdialog", DOM: true }, function($){ var backImageLink = (self.inputNode !== undefined) ? de_epages($(self.domNode).find("span.Button")) : de_epages(self.domNode), changeImage = function(selectedFile){ self.onApply("MediaGallery" + selectedFile.get("path")); }; backImageLink.mediagalleryUiFilemanagerdialog({ dialog: { buttons: { Ok: {click: function(){ var item = backImageLink.mediagalleryUiFilemanagerdialog("getSelectedElements")[0]; if(item){ if(item.get("metadata").type !== "MediaGallery"){ ep.ajax({ dataType: "json", type : "POST", data : { ChangeAction : "JSONCopyImageFromImageDb", StyleID: epConfig.objectId, ObjectID : epConfig.siteId, SourceFile : item.get("fullpath"), TargetDirectory : "", ViewAction : 'JSONViewResponse' } }) .done(function( jsonData, statusText, jqXHR ){ item.set({path: jsonData.Files[0].path}); changeImage(item); }); } else{ changeImage(item); } } ep(this).uiDialog("close"); } }, Cancel:{ click: function(){ ep(this).uiDialog("close"); } } }, close: function(){ backImageLink.mediagalleryUiFilemanagerdialog("resetFilemanager"); } }, filemanager: { currentFolder: "BackgroundImages", selectable: "image/jpe,image/jpg,image/jpeg,image/gif,image/png" } }); }); }, setFileTypes: function(/* String */ fileTypes) { // summary: updates the list of allowed file extensions if(typeof(fileTypes) === "string" && (this.validFileTypes != fileTypes)) { this.validFileTypes = fileTypes; var MediaGallery = $$('MediaGallery'); if(MediaGallery !== undefined) { MediaGallery.setFileTypes(this.validFileTypes); } } }, openDialog: function(/*Event*/evt) { // summary: Show MediaGallery // description: Calls show() of the mediagallery widget (widgetId=MediaGallery) if(!this.isMediaSelected && !this.isImageSelected) { var MediaGallery = $$('MediaGallery'); // set onApply function var onApply = ''; if(this.onApply != "") { onApply=this.onApply; } else if (this.isTinyMCE) { var me = this; onApply= function(selected) { var generatedHtml=""; $A(selected).each(function (el) { generatedHtml+=me.mceGenerateContent(el)+'<br />'; }); me.mceInsertContent(generatedHtml); }; } if(MediaGallery === undefined) { epages.require('ep_shop_tree','dijit.Tree'); epages.require('ep_shop_upload','epages.uploader'); epages.require('ep_mediagallery', 'epages.cartridges.de_epages.mediagallery.widget.Mediagallery'); MediaGallery = new epages.cartridges.de_epages.mediagallery.widget.Mediagallery({ id: 'MediaGallery', siteId: this.siteId, url: this.url, applyButtonLabel: this.applyButtonLabel, multiSelect: this.multiSelect, validFileTypes: this.validFileTypes, onApply: onApply, opener: this.opener }); document.getElementsByTagName("body")[0].appendChild(MediaGallery.domNode); } else { MediaGallery.setOnApply(onApply); } MediaGallery.changeOpener(this.opener); MediaGallery.show(); } }, mceGenerateContent: function(el) { // summary: // generates the tiny mce code (mimetype dependent) // el: epages.cartridges.de_epages.mediagallery.widget.Filelistitem // selected file list item // tags: // protected epages.require('ep_mediagallery', 'epages.cartridges.de_epages.mediagallery.Mimetypehtml'); var html= getHtmlByMimeType(el.mimetype, {src: el.fullpath, name: el.fileName}, true); return html; }, mceInsertContent: function (/* String */ html) { // summary: // insert code into tiny mce // html: // this html code will be inserted into tiny mce // tags: // protected if(tinyMCE && tinyMCE.activeEditor){ tinyMCE.activeEditor.selection.moveToBookmark(tinymce.WindowManager.bookmark); tinyMCE.activeEditor.execCommand('mceInsertContent', false, html); } } } );