芝麻web文件管理V1.00
")[0],priority:-40}))}},updateContent:function(){var g=this;if(!this.attachments){this.createAttachments()}if(!this.collection.length){this.collection.more().done(function(){if(!g.collection.length){g.createUploader()}})}},removeContent:function(){_.each(["attachments","uploader"],function(g){if(this[g]){this[g].remove();delete this[g]}},this)},createUploader:function(){this.removeContent();this.uploader=new f.view.UploaderInline({controller:this.controller,status:false,message:b.noItemsFound});this.views.add(this.uploader)},createAttachments:function(){this.removeContent();this.attachments=new f.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,AttachmentView:this.options.AttachmentView});this.views.add(this.attachments)},createSidebar:function(){var g=this.options,h=g.selection,i=this.sidebar=new f.view.Sidebar({controller:this.controller});this.views.add(i);if(this.controller.uploader){i.set("uploads",new f.view.UploaderStatus({controller:this.controller,priority:40}))}h.on("selection:single",this.createSingle,this);h.on("selection:unsingle",this.disposeSingle,this);if(h.single()){this.createSingle()}},createSingle:function(){var h=this.sidebar,i=this.options.selection.single(),g={};h.set("details",new f.view.Attachment.Details({controller:this.controller,model:i,priority:80}));h.set("compat",new f.view.AttachmentCompat({controller:this.controller,model:i,priority:120}));if(this.options.display){h.set("display",new f.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(i),attachment:i,priority:160,userSettings:this.model.get("displayUserSettings")}))}},disposeSingle:function(){var g=this.sidebar;g.unset("details");g.unset("compat");g.unset("display")}});f.view.Selection=f.View.extend({tagName:"div",className:"media-selection",template:f.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:false,clearable:true});this.attachments=new f.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model({edge:40,gutter:5})});this.views.set(".selection-view",this.attachments);this.collection.on("add remove reset",this.refresh,this);this.controller.on("content:activate",this.refresh,this)},ready:function(){this.refresh()},refresh:function(){if(!this.$el.children().length){return}var h=this.collection,g="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!h.length);this.$el.toggleClass("one",1===h.length);this.$el.toggleClass("editing",g);this.$(".count").text(b.selected.replace("%d",h.length))},edit:function(g){g.preventDefault();if(this.options.editable){this.options.editable.call(this,this.collection)}},clear:function(g){g.preventDefault();this.collection.reset()}});f.view.Attachment.Selection=f.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});f.view.Attachments.Selection=f.view.Attachments.extend({events:{},initialize:function(){_.defaults(this.options,{sortable:true,resize:false,AttachmentView:f.view.Attachment.Selection});return f.view.Attachments.prototype.initialize.apply(this,arguments)}});f.view.Attachment.EditSelection=f.view.Attachment.Selection.extend({buttons:{close:true}});f.view.Settings=f.View.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model();this.model.on("change",this.updateChanges,this)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){f.View.prototype.render.apply(this,arguments);_(this.model.attributes).chain().keys().each(this.update,this);return this},update:function(j){var k=this.model.get(j),i=this.$('[data-setting="'+j+'"]'),g,h;if(!i.length){return}if(i.is("select")){h=i.find('[value="'+k+'"]');if(h.length){i.find("option").prop("selected",false);h.prop("selected",true)}else{this.model.set(j,i.find(":selected").val())}}else{if(i.hasClass("button-group")){g=i.find("button").removeClass("active");g.filter('[value="'+k+'"]').addClass("active")}else{if(i.is('input[type="text"], textarea')){if(!i.is(":focus")){i.val(k)}}else{if(i.is('input[type="checkbox"]')){i.attr("checked",!!k)}}}}},updateHandler:function(i){var h=e(i.target).closest("[data-setting]"),j=i.target.value,g;i.preventDefault();if(!h.length){return}if(h.is('input[type="checkbox"]')){j=h[0].checked}this.model.set(h.data("setting"),j);if(g=h.data("userSetting")){setUserSetting(g,j)}},updateChanges:function(h,g){if(g.changes){_(g.changes).chain().keys().each(this.update,this)}}});f.view.Settings.AttachmentDisplay=f.view.Settings.extend({className:"attachment-display-settings",template:f.template("attachment-display-settings"),initialize:function(){var g=this.options.attachment;_.defaults(this.options,{userSettings:false});f.view.Settings.prototype.initialize.apply(this,arguments);this.model.on("change:link",this.updateLinkTo,this);if(g){g.on("change:uploading",this.render,this)}},dispose:function(){var g=this.options.attachment;if(g){g.off(null,null,this)}f.view.Settings.prototype.dispose.apply(this,arguments)},render:function(){var g=this.options.attachment;if(g){_.extend(this.options,{sizes:g.get("sizes"),type:g.get("type")})}f.view.Settings.prototype.render.call(this);this.updateLinkTo();return this},updateLinkTo:function(){var h=this.model.get("link"),i=this.$(".link-to-custom"),g=this.options.attachment;if("none"===h||(!g&&"custom"!==h)){i.hide();return}if(g){if("post"===h){i.val(g.get("link"))}else{if("file"===h){i.val(g.get("url"))}else{if(!this.model.get("linkUrl")){i.val("http://")}}}i.prop("readonly","custom"!==h)}i.show();if(i.is(":visible")){i.focus()[0].select()}}});f.view.Settings.Gallery=f.view.Settings.extend({className:"gallery-settings",template:f.template("gallery-settings")});f.view.Attachment.Details=f.view.Attachment.extend({tagName:"div",className:"attachment-details",template:f.template("attachment-details"),events:{"change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .delete-attachment":"deleteAttachment","click .edit-attachment":"editAttachment","click .refresh-attachment":"refreshAttachment"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});f.view.Attachment.prototype.initialize.apply(this,arguments)},render:function(){f.view.Attachment.prototype.render.apply(this,arguments);this.focusManager.focus();return this},deleteAttachment:function(g){g.preventDefault();if(confirm(b.warnDelete)){this.model.destroy()}},editAttachment:function(g){this.$el.addClass("needs-refresh")},refreshAttachment:function(g){this.$el.removeClass("needs-refresh");g.preventDefault();this.model.fetch()}});f.view.AttachmentCompat=f.View.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});this.model.on("change:compat",this.render,this)},dispose:function(){if(this.$(":focus").length){this.save()}return f.View.prototype.dispose.apply(this,arguments)},render:function(){var g=this.model.get("compat");if(!g||!g.item){return}this.views.detach();this.$el.html(g.item);this.views.render();this.focusManager.focus();return this},preventDefault:function(g){g.preventDefault()},save:function(g){var h={};if(g){g.preventDefault()}_.each(this.$el.serializeArray(),function(i){h[i.name]=i.value});this.model.saveCompat(h)}});f.view.Iframe=f.View.extend({className:"media-iframe",render:function(){this.views.detach();this.$el.html('');this.views.render();return this}});f.view.Embed=f.View.extend({className:"media-embed",initialize:function(){this.url=new f.view.EmbedUrl({controller:this.controller,model:this.model.props}).render();this.views.set([this.url]);this.refresh();this.model.on("change:type",this.refresh,this);this.model.on("change:loading",this.loading,this)},settings:function(g){if(this._settings){this._settings.remove()}this._settings=g;this.views.add(g)},refresh:function(){var h=this.model.get("type"),g;if("image"===h){g=f.view.EmbedImage}else{if("link"===h){g=f.view.EmbedLink}else{return}}this.settings(new g({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});f.view.EmbedUrl=f.View.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.input=this.make("input",{type:"text",value:this.model.get("url")||""});this.spinner=this.make("span",{"class":"spinner"});this.$input=e(this.input);this.$el.append([this.input,this.spinner]);this.model.on("change:url",this.render,this)},render:function(){var g=this.$input;if(g.is(":focus")){return}this.input.value=this.model.get("url")||"http://";f.View.prototype.render.apply(this,arguments);return this},ready:function(){this.focus()},url:function(g){this.model.set("url",g.target.value)},focus:function(){var g=this.$input;if(g.is(":visible")){g.focus()[0].select()}}});f.view.EmbedLink=f.view.Settings.extend({className:"embed-link-settings",template:f.template("embed-link-settings")});f.view.EmbedImage=f.view.Settings.AttachmentDisplay.extend({className:"embed-image-settings",template:f.template("embed-image-settings"),initialize:function(){f.view.Settings.AttachmentDisplay.prototype.initialize.apply(this,arguments);this.model.on("change:url",this.updateImage,this)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}})}(jQuery));