26 lines
17 KiB
JavaScript
26 lines
17 KiB
JavaScript
define("tpl!qtiItemPci/pciManager/tpl/layout",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){this.compilerInfo=[4,">= 1.0.0"],data=data||{};var helper,options,buffer="",helperMissing=(helpers=this.merge(helpers,Handlebars.helpers)).helperMissing,escapeExpression=this.escapeExpression
|
|
;return buffer+='<div class="pcimgr resourcemgr">\n\n <section class="file-selector">\n <h1>\n <div class="title-container lft">\n <span class="title">Manage custom interactions</span>\n </div>\n <div class="upload-switcher rgt">\n <a href="#" class="btn-info small upload"><span class="icon-add"></span>'+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"Add Interaction",options):helperMissing.call(depth0,"__","Add Interaction",options))
|
|
)+'</a>\n <a href="#" class="btn-info small listing hidden"><span class="icon-undo"></span>'+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"Back to listing",options):helperMissing.call(depth0,"__","Back to listing",options)))+'</a>\n </div>\n </h1>\n \n <div class="empty">\n '+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"No Custom Interaction",options):helperMissing.call(depth0,"__","No Custom Interaction",options))
|
|
)+'\n </div>\n\n <ul class="files"></ul>\n\n <div class="file-upload-container hidden"></div>\n </section> \n\n</div>'})}),define("tpl!qtiItemPci/pciManager/tpl/listing",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this,helperMissing=helpers.helperMissing;function program2(depth0,data){return' pci-disabled"'}function program4(depth0,data){return' <span class="runtime">- runtime only</span>'}
|
|
return buffer+='<div class="action-header">\n <span class="switch-header">Enabled in item authoring</span>\n </div>\n',((stack1=helpers.each.call(depth0,depth0&&depth0.interactions,{hash:{},inverse:self.noop,fn:self.program(1,function(depth0,data){var stack1,helper,options,buffer="";return buffer+='\n<li data-type-identifier="',stack1=(helper=helpers.typeIdentifier)?helper.call(depth0,{hash:{},data:data}):typeof(helper=depth0&&depth0.typeIdentifier)===functionType?helper.call(depth0,{hash:{},data:data}):helper,buffer+=escapeExpression(stack1)+'" class="pci-list-element',((stack1=helpers.unless.call(depth0,depth0&&depth0.enabled,{hash:{},
|
|
inverse:self.noop,fn:self.program(2,program2,data),data:data}))||0===stack1)&&(buffer+=stack1),buffer+='">\n <span class="desc truncate">\n <span class="name">(',stack1=(helper=helpers.model)?helper.call(depth0,{hash:{},data:data}):typeof(helper=depth0&&depth0.model)===functionType?helper.call(depth0,{hash:{},data:data}):helper,buffer+=escapeExpression(stack1),((stack1=helpers.if.call(depth0,depth0&&depth0.runtimeOnly,{hash:{},inverse:self.noop,fn:self.program(4,program4,data),data:data}))||0===stack1)&&(buffer+=stack1),buffer+=") - ",stack1=(helper=helpers.label)?helper.call(depth0,{hash:{},data:data}):typeof(helper=depth0&&depth0.label
|
|
)===functionType?helper.call(depth0,{hash:{},data:data}):helper,buffer+=escapeExpression(stack1)+" - v",stack1=(helper=helpers.version)?helper.call(depth0,{hash:{},data:data}):typeof(helper=depth0&&depth0.version)===functionType?helper.call(depth0,{hash:{},data:data}):helper,buffer+=escapeExpression(stack1)+'</span>\n <span class="disable-tag">- '+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"disabled",options):helperMissing.call(depth0,"__","disabled",options))
|
|
)+'</span>\n </span>\n\n <div class="actions">\n <div class="pci-switch"></div>\n <div class="pci-download-button"></div>\n <div class="pci-unregister-button"></div>\n </div>\n</li>\n'},data),data:data}))||0===stack1)&&(buffer+=stack1),buffer})}),define("tpl!qtiItemPci/pciManager/tpl/packageMeta",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var helper,options,buffer="",escapeExpression=this.escapeExpression,helperMissing=helpers.helperMissing
|
|
;return buffer+='<span class="upload-label">',buffer+=escapeExpression((helper=helpers.label)?helper.call(depth0,{hash:{},data:data}):"function"==typeof(helper=depth0&&depth0.label)?helper.call(depth0,{hash:{},data:data}):helper)+'</span>\n<span class="upload-separator"></span>\n<span class="upload-identifier">('+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"type : ",options):helperMissing.call(depth0,"__","type : ",options))),buffer+=escapeExpression((helper=helpers.model)?helper.call(depth0,{hash:{},data:data}):"function"==typeof(helper=depth0&&depth0.model)?helper.call(depth0,{hash:{},data:data}
|
|
):helper)+", "+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"id : ",options):helperMissing.call(depth0,"__","id : ",options))),buffer+=escapeExpression((helper=helpers.typeIdentifier)?helper.call(depth0,{hash:{},data:data}):"function"==typeof(helper=depth0&&depth0.typeIdentifier)?helper.call(depth0,{hash:{},data:data}):helper)+", "+escapeExpression((options={hash:{},data:data},(helper=helpers.__||depth0&&depth0.__)?helper.call(depth0,"version : ",options):helperMissing.call(depth0,"__","version : ",options))),buffer+=escapeExpression((helper=helpers.version)?helper.call(depth0,{hash:{},data:data}
|
|
):"function"==typeof(helper=depth0&&depth0.version)?helper.call(depth0,{hash:{},data:data}):helper)+')</span>\n<span class="upload-separator">-</span>'})}),define("qtiItemPci/pciManager/pciManager",["jquery","i18n","lodash","helpers","ui/component","ui/hider","ui/switch/switch","ui/button","tpl!qtiItemPci/pciManager/tpl/layout","tpl!qtiItemPci/pciManager/tpl/listing","tpl!qtiItemPci/pciManager/tpl/packageMeta","async","ui/dialog/confirm","ui/dialog","ui/feedback","ui/modal","ui/uploader","ui/filesender"],function($,__,_,helpers,component,hider,switchFactory,buttonFactory,layoutTpl,listingTpl,packageMetaTpl,asyncLib,confirmBox,dialog,feedback){"use strict"
|
|
;var _fileTypeFilters=["application/zip","application/x-zip-compressed","application/x-zip"],_fileExtFilter=/.+\.(zip)$/,_defaults={loadUrl:null,disableUrl:null,enableUrl:null,verifyUrl:null,addUrl:null},pciManager={open:function(){this.trigger("showListing"),this.getElement().appendTo(".pci-manager")}};return function(config){var listing={};return component(pciManager,_defaults).setTemplate(layoutTpl).on("showListing",function(){var $fileSelector=this.getElement().find(".file-selector"),$title=$fileSelector.find(".title"),$uploader=$fileSelector.find(".file-upload-container"),$uploadForm=$uploader.parent("form"),$switcher=$fileSelector.find(
|
|
".upload-switcher a");hider.show($switcher.filter(".upload")),hider.hide($switcher.filter(".listing")),$uploadForm.hide(),hider.hide($uploader),$title.text(__("Manage custom interactions")),this.trigger("updateListing")}).on("hideListing",function(){var $fileSelector=this.getElement().find(".file-selector"),$fileContainer=$fileSelector.find(".files"),$placeholder=$fileSelector.find(".empty"),$title=$fileSelector.find(".title"),$uploader=$fileSelector.find(".file-upload-container"),$uploadForm=$uploader.parent("form"),$switcher=$fileSelector.find(".upload-switcher a");hider.show($switcher.filter(".listing")),hider.hide($switcher.filter(".upload")),
|
|
$switcher.filter(".listing").css({display:"inline-block"}),$uploadForm.show(),hider.hide($fileContainer),hider.hide($placeholder),$title.text(__("Upload new custom interaction (zip package)")),$uploader.uploader("reset"),hider.show($uploader)}).on("updateListing",function(){var self=this,urls=_.pick(this.config,["disableUrl","enableUrl","unregisterUrl","exportPciUrl"]),$fileSelector=this.getElement().find(".file-selector"),$fileContainer=$fileSelector.find(".files"),$placeholder=$fileSelector.find(".empty");_.size(listing)?(hider.hide($placeholder),$fileContainer.empty().html(listingTpl({interactions:listing})),$fileContainer.find(".actions").each(function(
|
|
){var pciDownloadButton=$(this).find(".pci-download-button"),pciswitch=$(this).find(".pci-switch"),pciUnregisterButton=$(this).find(".pci-unregister-button"),$li=$(this).closest("li"),typeIdentifier=$li.data("typeIdentifier"),runtimeOnly=listing[typeIdentifier].runtimeOnly;runtimeOnly||switchFactory(pciswitch,{on:{active:!$li.hasClass("pci-disabled")},off:{active:$li.hasClass("pci-disabled")}}).on("on",function(){$li.removeClass("pci-disabled"),$.getJSON(urls.enableUrl,{typeIdentifier:typeIdentifier},function(data){data.success&&(listing[typeIdentifier].enabled=!0,self.trigger("pciEnabled",typeIdentifier))})}).on("off",function(){$li.addClass("pci-disabled")
|
|
,$.getJSON(urls.disableUrl,{typeIdentifier:typeIdentifier},function(data){data.success&&(listing[typeIdentifier].enabled=!1,self.trigger("pciDisabled",typeIdentifier))})}),buttonFactory({id:"unregister",type:"info",icon:"bin",label:"Delete",class:"unregister",renderTo:pciUnregisterButton}).on("click",function(){dialog({class:"icon-warning",heading:__("Warning"),message:__("You are about to delete the Portable Custom Interaction <strong>%s</strong> from the system.",typeIdentifier),content:__("This action will affect all items that may be using it and cannot be undone. Please confirm your choice."),autoRender:!0,autoDestroy:!0,buttons:[{id:"cancel",
|
|
type:"regular",label:__("Cancel"),close:!0},{id:"delete",type:"error",label:__("Delete"),close:!0}],onDeleteBtn:function(){$.getJSON(urls.unregisterUrl,{typeIdentifier:typeIdentifier},function(data){data.success&&(delete listing[typeIdentifier],self.trigger("pciDisabled",typeIdentifier))})}})}),runtimeOnly||buttonFactory({id:"exportPci",type:"info",icon:"import",label:"Download",renderTo:pciDownloadButton}).on("click",function(){window.location=urls.exportPciUrl+"?typeIdentifier="+typeIdentifier})}),hider.show($fileContainer)):(hider.hide($fileContainer),hider.show($placeholder))}).on("pciEnabled",function(){this.trigger("updateListing")}).on("pciDisabled",
|
|
function(){this.trigger("updateListing")}).on("render",function(){var $uploadForm,self=this,urls=_.pick(this.config,["loadUrl","disableUrl","enableUrl","verifyUrl","addUrl"]),$fileSelector=this.getElement().find(".file-selector"),$uploader=$fileSelector.find(".file-upload-container");$fileSelector.find(".upload-switcher a").on("click",function(e){e.preventDefault(),hider.isHidden($uploader)?self.trigger("hideListing"):self.trigger("showListing")}),function(){var errors=[],selectedFiles={};function verify(file,cb){$uploadForm.sendfile({url:urls.verifyUrl,file:file,loaded:function(r){function done(ok){ok&&(selectedFiles[file.name]={
|
|
typeIdentifier:r.typeIdentifier,label:r.label,version:r.version,model:r.model}),cb(ok)}r.valid?r.exists?confirmBox(__('There is already one interaction with the same identifier "%s" (label : "%s") and same version : %s. Do you want to override the existing one ?',r.typeIdentifier,r.label,r.version),function(){done(!0)},function(){done(!1)}):done(!0):(_.isArray(r.package)&&_.each(r.package,function(report){_.isArray(report.messages)&&_.forEach(report.messages,function(msg){feedback().error(msg.message)})}),done(!1))},failed:function(message){cb(new Error(message))}})}$uploader.on("upload.uploader",function(e,file,interactionHook){
|
|
listing[interactionHook.typeIdentifier]=interactionHook,self.trigger("pciAdded",interactionHook.typeIdentifier)}).on("fail.uploader",function(e,file,err){errors.push(__("Unable to upload file %s : %s",file.name,err))}).on("end.uploader",function(){0===errors.length?self.trigger("showListing"):feedback().error("<ul><li>"+errors.join("</li><li>")+"</li></ul>",{encodeHtml:!1}),errors=[]}).on("create.uploader",function(){($uploadForm=$uploader.parent("form")).hide()}).on("fileselect.uploader",function(){$uploadForm.find("li[data-file-name]").each(function(){var $li=$(this),filename=$li.data("file-name"),packageMeta=selectedFiles[filename]
|
|
;packageMeta&&$li.prepend(packageMetaTpl(packageMeta))})}),$uploader.uploader({upload:!0,multiple:!0,uploadUrl:urls.addUrl,fileSelect:function(files,done){var givenLength=files.length;(files=_.filter(files,function(file){var checkType=file.type.replace(/("|')/g,"");return _.contains(_fileTypeFilters,checkType)||""===checkType&&_fileExtFilter.test(file.name)})).length!==givenLength&&feedback().error("Invalid files have been removed"),selectedFiles={},asyncLib.filter(files,verify,done)}})}(),$.getJSON(urls.loadUrl,function(data){listing=_.size(data)?data:{},self.trigger("updateListing",data),self.trigger("loaded",data)})}).init(config)}}),define(
|
|
"css!qtiItemPciCss/pci-manager",[],function(){}),define("qtiItemPci/controller/pciManager/index",["jquery","util/url","qtiItemPci/pciManager/pciManager","css!qtiItemPciCss/pci-manager"],function($,url,pciManager){"use strict";var $container=$(".pci-manager");return{start:function(){pciManager({renderTo:$container,loadUrl:url.route("getRegisteredImplementations","PciManager","qtiItemPci"),disableUrl:url.route("disable","PciManager","qtiItemPci"),enableUrl:url.route("enable","PciManager","qtiItemPci"),verifyUrl:url.route("verify","PciManager","qtiItemPci"),addUrl:url.route("add","PciManager","qtiItemPci"),unregisterUrl:url.route("unregister","PciManager",
|
|
"qtiItemPci"),exportPciUrl:url.route("export","PciManager","qtiItemPci")})}}}),define("qtiItemPci/controller/routes",[],function(){"use strict";return{PciManager:{actions:{index:"controller/pciManager/index"}}}}),function(c){var d=document,a="appendChild",i="styleSheet",s=d.createElement("style");s.type="text/css",d.getElementsByTagName("head")[0][a](s),s[i]?s[i].cssText=c:s[a](d.createTextNode(c))}(
|
|
".pci-manager{margin:auto auto;width:80%}.pci-manager .pcimgr{max-width:100%}.pci-manager .resourcemgr{width:100%}.pci-manager-trigger:before{margin-right:5px;font-size:10.5px;font-size:1.05rem;font-family:'tao' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:\"\\e61c\"}.pcimgr .file-selector{display:block;min-height:400px;min-width:100%;margin-bottom:20px}.pcimgr .file-selector .title-container{margin-right:75px}.pcimgr .file-selector .title-container .title{margin-right:0}.pcimgr .file-selector .note{color:#0e5d91;font-weight:bold;margin:0 3px}.pcimgr .file-selector .note-container{position:absolute;bottom:-30px}.pcimgr .file-selector ul.files{overflow-y:auto;min-height:300px}.pcimgr .file-selector ul.files div.action-header{position:relative;height:2rem}.pcimgr .file-selector ul.files div.action-header span.switch-header{position:absolute;right:23rem}.pcimgr .file-selector .pci-list-element{cursor:default !important}.pcimgr .file-selector .pci-list-element span.runtime{color:#0e5d91}.pcimgr .file-selector .pci-list-element div.actions{top:5px !important;width:auto !important;height:auto !important;line-height:1.4}.pcimgr .file-selector .pci-list-element div.actions .pci-switch{margin-right:2rem;position:relative;left:0;top:1px;display:inline}.pcimgr .file-selector .pci-list-element div.actions .pci-unregister-button{position:relative;display:inline;margin-right:2rem}.pcimgr .file-selector .pci-list-element div.actions .pci-download-button{position:relative;display:inline}.pcimgr .file-selector .pci-list-element .button-disable{height:18px;padding:4px 6px;display:inline-block}.pcimgr .file-selector .pci-list-element .button-enable{height:18px;padding:4px 6px;display:none}.pcimgr .file-selector .pci-list-element .disable-tag{display:none;font-style:italic}.pcimgr .file-selector .pci-list-element.pci-disabled{color:#a7a7a7}.pcimgr .file-selector .pci-list-element.pci-disabled:hover{background:#ecf2f6}.pcimgr .file-selector .pci-list-element.pci-disabled .button-disable{display:none}.pcimgr .file-selector .pci-list-element.pci-disabled .button-enable{display:inline-block}.pcimgr .file-selector .pci-list-element.pci-disabled .desc{font-style:italic}.pcimgr .file-selector .pci-list-element.pci-disabled .disable-tag{display:inline-block}.pcimgr .file-selector .file-upload-container{display:block}.uploader .upload-separator{margin:0 2px;color:#333}.uploader .upload-label{font-weight:bold}.uploader .upload-identifier{color:#333}\n\n/*# sourceMappingURL=pci-manager.css.map */"
|
|
),define("qtiItemPci/loader/qtiItemPci.bundle",function(){});
|
|
//# sourceMappingURL=qtiItemPci.min.js.map
|