psc-cms-js
Advanced tools
Comparing version 1.3.0 to 1.4.0-5082004
@@ -20,2 +20,3 @@ | ||
lib/Psc/AjaxFormHandler.js | ||
vendor/lodash/lodash-0.10.0.min.js | ||
lib/Psc/InvalidArgumentException.js | ||
@@ -35,3 +36,2 @@ lib/Psc/Request.js | ||
lib/Psc/UI/FormController.js | ||
vendor/lodash/lodash-0.10.0.min.js | ||
lib/Psc/UI/Tab.js | ||
@@ -38,0 +38,0 @@ lib/Psc/UI/TabNotFoundException.js |
@@ -1,2 +0,2 @@ | ||
define(['joose', 'Psc/Code','Psc/Exception'], function(Joose) { | ||
define(['joose', 'lodash', 'Psc/Code','Psc/Exception'], function(Joose, _) { | ||
Joose.Class('Psc.InvalidArgumentException', { | ||
@@ -23,3 +23,3 @@ isa: Psc.Exception, | ||
return Joose.O.extend(this.SUPER(msg), { | ||
return _.extend(this.SUPER(msg), { | ||
arg: arg, | ||
@@ -26,0 +26,0 @@ expected: expected, |
@@ -55,3 +55,5 @@ define(['joose', 'jquery-fileupload', 'jquery-iframe-transport', 'Psc/UI/GridTable', 'Psc/Code', 'Psc/Request', 'Psc/UI/Dialog','Psc/FormRequest'], function(Joose) { | ||
that.$$grid.onCellsDoubleClick(function (event, $cell, rowIndex, columnIndex) { | ||
that.openChangeValueDialog(rowIndex, columnIndex); | ||
if (that.$$grid.getColumns()[columnIndex].editable) { | ||
that.openChangeValueDialog(rowIndex, columnIndex); | ||
} | ||
}); | ||
@@ -58,0 +60,0 @@ }, |
@@ -1,2 +0,2 @@ | ||
define(['joose', 'Psc/Code', 'Psc/Exception'], function(Joose) { | ||
define(['joose', 'lodash', 'Psc/Code', 'Psc/Exception'], function(Joose, _) { | ||
Joose.Class('Psc.UI.TabNotFoundException', { | ||
@@ -11,3 +11,3 @@ isa: Psc.Exception, | ||
BUILD: function (search) { | ||
return Joose.O.extend(this.SUPER("Tab nicht gefunden, gesucht wurde durch: "+Psc.Code.odump(search)), { | ||
return _.extend(this.SUPER("Tab nicht gefunden, gesucht wurde durch: "+Psc.Code.odump(search)), { | ||
search: search | ||
@@ -14,0 +14,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
define("tiptoi/Main",["joose","Psc/Request","Psc/Code","Psc/UI/WidgetWrapper"],function(e){e.Class("tiptoi.Main",{isa:Psc.UI.WidgetWrapper,has:{productName:{is:"rw",required:!0,isPrivate:!0},main:{is:"rw",required:!0,isPrivate:!0,handles:["handleAjaxRequest"]}},after:{initialize:function(){this.$$main.register(this,"tiptoiMain")}},methods:{createAction:function(e){return this.$$main.handleAjaxRequest(this.createRequest(["matrix-manager","create-action"],"GET",e,"html"))},createTransition:function(e){return this.$$main.handleAjaxRequest(this.createRequest(["matrix-manager","create-transition"],"GET",e,"html"))},dispatch:function(e){return this.$$main.handleAjaxRequest(e)},createRequest:function(e,t,i,n,r){t||(t="GET"),n||(n="json");var s=new Psc.Request({url:"/api/product/"+this.$$productName+"/"+e.join("/"),method:t,body:i,format:n,sendAs:r});return s},toString:function(){return"[tiptoi.Main]"}}})}),define("tiptoi/Timer",["joose","jquery"],function(e,t){e.Class("tiptoi.Timer",{has:{deferred:{is:"rw",required:!1,isPrivate:!0},timeout:{is:"rw",required:!1,isPrivate:!0},seconds:{is:"rw",required:!0,isPrivate:!0}},methods:{getTime:function(){return 1e3*this.$$seconds},start:function(){this.stop();var e=t.Deferred();return this.$$deferred=e,this.$$timeout=window.setTimeout(function(){e.reject()},this.getTime()),e.promise()},hasRunOut:function(e){this.$$deferred&&this.$$deferred.fail(e)},stop:function(){this.$$deferred&&(window.clearTimeout(this.$$timeout),this.$$deferred.resolve())},toString:function(){return"[tiptoi.Timer]"}}})}),define("tiptoi/Sound",["joose","jquery"],function(e,t){e.Class("tiptoi.Sound",{has:{content:{is:"rw",required:!0,isPrivate:!0},number:{is:"rw",required:!0,isPrivate:!0},speakers:{is:"rw",required:!1,isPrivate:!0}},my:{methods:{list:function(e){var i=[];return t.each(e,function(e,t){i.push(new tiptoi.Sound({content:t[0],number:t[1]}))}),i}}},methods:{toString:function(){return this.$$content?"„"+this.$$content+"“ ("+this.$$number+")":"[tiptoi.Sound]"}}})}),define("tiptoi/cpu",["joose","tiptoi/Timer","Psc/EventDispatching","tiptoi/Sound"],function(e){e.Class("tiptoi.cpu",{does:[Psc.EventDispatching],has:{eventManager:{is:"rw",required:!1,isPrivate:!0,handles:["on","one","off"]},inputProvider:{is:"rw",required:!0,isPrivate:!0},startedTimers:{is:"rw",required:!0,isPrivate:!0,init:e.I.Array}},methods:{start:function(e){this._trigger("start",[this,e])},waitForInput:function(e){var t=this;this._trigger("waiting-for-input"),$.when(this.$$inputProvider.getInput()).then(function(i){t._trigger("input-given",["OID",i]);try{e(i)}catch(n){t._trigger("crash",[n]),t.end()}})},waitForInputWithTimer:function(e,t){var i=this;this._trigger("waiting-for-input-with-timer",[e]);var n=!1;e.hasRunOut(function(){n=!0}),$.when(this.$$inputProvider.getInput()).then(function(e){if(n)i._trigger("input-ignored",["timedout","OID",e]);else{i._trigger("input-given",["OID",e]);try{t(e)}catch(r){i._trigger("crash",[r]),i.end()}}})},require:function(e,t){for(var i=e.length-1;i>=0;i--)e[i]="gdl/"+e[i].replace(/\./g,"/");return require(e,t)},startTimer:function(e){var t=new tiptoi.Timer({seconds:e});return this.$$startedTimers.push(t),this._trigger("start-timer",[t]),t.start(),t},evaluate:function(){this._trigger("evaluate",arguments)},startGame:function(e){this._trigger("start-game",[e])},createSound:function(e){return new tiptoi.Sound(e)},end:function(){for(var e,t=0;t<this.$$startedTimers.length;t++)e=this.$$startedTimers[t],e.stop();this._trigger("end",[this])},_trigger:function(e,t){t=t||[],this.getEventManager().triggerEvent("tiptoi-"+e,{tiptoi:this},t)},toString:function(){return"[tiptoi.cpu]"}}})}),define("tiptoi/StringOutput",["joose","Psc/Code","tiptoi/cpu","Psc/Exception"],function(e){e.Class("tiptoi.StringOutput",{has:{eventManager:{is:"rw",required:!0,isPrivate:!0},pipe:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){if(!Psc.Code.isFunction(this.$$pipe))throw new Psc.Exception("ableitende Klasse für StringOutput muss pipe auf eine function setzen: "+this.toString());this.initEvents()}},methods:{initEvents:function(){var e=this.getEventManager(),t=this.getPipe();e.on({"play-sounds":function(e,i,n){t(i.join("\n + "),e.type,[n])},"play-sound":function(e,i,n){t(i.toString(),e.type,[n])},"tiptoi-waiting-for-input":function(e){t("tiptoi wartet auf input...",e.type)},"tiptoi-waiting-for-input-with-timer":function(e,i){t("tiptoi wartet auf input "+i.getSeconds()+" Sekunde(n) timeout...",e.type)},"tiptoi-input-given":function(e,i,n){t("getippt wurde: "+i+": "+n,e.type)},"tiptoi-crash":function(e,i){var n=i.message||i.getMessage();t("ERROR: tiptoi ist gecrasht wegen Programmierfehler: "+n,e.type)},"tiptoi-start-game":function(e,i){i||(i="(nicht angegeben)"),t("tiptoi würde Spiel "+i+" starten. Dies ist jedoch im Simulator nicht möglich.")},"tiptoi-start-timer":function(e,i){t("Starte timer mit "+i.getSeconds()+" Sekunden..")},"tiptoi-evaluate":function(e,i){t("Evaluation von "+i+" richtigen Antworten",e.type)},"tiptoi-start":function(e,i,n){t("Spiel „"+n.getName()+"“ startet",e.type)},"tiptoi-end":function(e){t("Spiel beendet",e.type)}})},reset:function(){},toString:function(){return"[tiptoi.StringOutput]"}}})}),define("tiptoi/HTMLOutput",["joose","tiptoi/StringOutput"],function(e){e.Class("tiptoi.HTMLOutput",{isa:tiptoi.StringOutput,has:{widget:{is:"rw",required:!0,isPrivate:!0}},before:{initialize:function(){var e=this,t=this.getEventManager(),i=this.$$widget;this.$$pipe=function(e,t,n){if("tiptoi-input-given"===t)return!1;var r=$('<p class="'+t+'">'+e+"</p>");return"play-sound"===t||"play-sounds"===t?(-1!==e.search(/Wrong-Sound/)&&r.addClass("wrong-sound"),-1!==e.search(/(Right-Sound|tusch)/i)&&r.addClass("right-sound"),n&&"question"===n[0]&&r.addClass("question-sound")):"crash"===t&&r.addClass("crash"),i.append(r)},t.on("input-provider-listening",function(){var e=i.find("p.tiptoi-waiting-for-input").last();e.effect("pulsate",[300],2500)}),t.on("input-provider-got-input",function(t,n){var r=i.find("p.tiptoi-waiting-for-input");e.stopFlashing(r,n)}),t.on("tiptoi-end",function(){var t=i.find("p.tiptoi-waiting-for-input");e.stopFlashing(t,{oid:0,label:"keine, da Spiel beendet"})})}},methods:{reset:function(){this.$$widget.empty()},stopFlashing:function(e,t){e.stop(!0).queue(function(){e.css("opacity",1).removeClass("tiptoi-waiting-for-input").addClass("tiptoi-waited-for-input").html("getippt wurde: "+t.oid+" "+t.label)})},toString:function(){return"[tiptoi.HTMLOutput]"}}})}),define("Psc/Numbers",["joose"],function(e){e.Class("Psc.Numbers",{has:{},my:{methods:{randomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},formatBytes:function(e){return"number"!=typeof e?"":e>=1e9?(e/1e9).toFixed(2)+" GB":e>=1e6?(e/1e6).toFixed(2)+" MB":(e/1e3).toFixed(2)+" KB"}}},methods:{toString:function(){return"[Psc.Numbers]"}}})}),define("tiptoi/SimpleSoundPlayer",["joose","jquery","Psc/Code","tiptoi/Sound","Psc/Numbers","Psc/EventDispatching"],function(e){e.Class("tiptoi.SimpleSoundPlayer",{does:[Psc.EventDispatching],has:{onPlay:{is:"rw",required:!0,isPrivate:!0}},methods:{playSound:function(e,t){e&&(t||(t="normal"),e=this.normalizeSound(e),this.$$eventManager.triggerEvent("play-sound",{},[e,t]),this.$$onPlay.apply(this,[[e]]))},playSounds:function(e){e&&e.length&&(e=this.normalizeSounds(e),this.$$eventManager.triggerEvent("play-sounds",{},[e]),this.$$onPlay.apply(this,[e]))},playRandomSound:function(e){if(e&&e.length){e=this.normalizeSounds(e);var t=Psc.Numbers.randomInt(0,e.length-1),i=e[t];this.$$eventManager.triggerEvent("play-sound",{},[i]),this.$$onPlay.apply(this,[e])}},normalizeSounds:function(e){for(var t=[],i=0,n=e.length;n>i;i++)t.push(this.normalizeSound(e[i]));return t},normalizeSound:function(e){return Psc.Code.isArray(e)&&2===e.length?new tiptoi.Sound({content:e[0],number:e[1]}):"string"==typeof e?new tiptoi.Sound({content:e,number:null}):Psc.Code.isInstanceOf(e,tiptoi.Sound)?e:"object"==typeof e?new tiptoi.Sound(e):new tiptoi.Sound({content:e,number:null})}}})}),define("tiptoi/Program",["joose"],function(e){e.Class("tiptoi.Program",{has:{code:{is:"rw",required:!0,isPrivate:!0},tables:{is:"rw",required:!1,isPrivate:!0,init:e.I.Object},sounds:{is:"rw",required:!1,isPrivate:!0,init:e.I.Object},name:{is:"rw",required:!1,isPrivate:!0}},methods:{setTable:function(e,t){return this.$$tables[e]=t,this},setSound:function(e,t){return this.$$sounds[e]=t,this},setSounds:function(e,t){return this.$$sounds[e]=t,this},setSoundsList:function(e,t){return this.setSounds(e,tiptoi.Sound.list(t))}}})}),define("tiptoi/GameTable",["joose","Psc/Numbers","Psc/Code"],function(e){e.Class("tiptoi.GameTable",{has:{rows:{is:"rw",required:!0,isPrivate:!1},name:{is:"rw",required:!0,isPrivate:!0},blocksNum:{is:"rw",required:!1,isPrivate:!0,init:!1},rowsLeft:{is:"rw",required:!1,isPrivate:!0},blockNumsLeft:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){Psc.Code.assertArray(this.rows,"this.rows","GameTable.chooseRandomBlock()"),this.$$rowsLeft=this.shuffle(this.rows.slice())}},methods:{getRow:function(e){return this.rows[e]},chooseNotYetUsedRandomRow:function(){return this.$$rowsLeft.pop()},chooseNotYetUsedRandomBlock:function(){if(!this.$$blockNumsLeft){this.$$blockNumsLeft=[];for(var e=1,t=this.getBlocksNum();t>=e;e++)this.$$blockNumsLeft.push(e);this.shuffle(this.$$blockNumsLeft)}var i=this.$$blockNumsLeft.pop();return void 0!==i?this.getBlock(i):void 0},chooseRandomBlock:function(){var e=this.getBlocksNum(),t=this.getRandomInt(1,e);return this.getBlock(t)},chooseRandomRow:function(){var e=this.getRandomInt(0,this.rows.length-1);return this.rows[e]},getBlock:function(e){e=Math.max(1,e);var t=this.getBlocksNum(),i=[];if(e>t)throw new Psc.Exception("Den Block "+e+" gibt es im "+this.getName()+"Table nicht");return $.each(this.rows,function(t,n){n.block===e&&i.push(n)}),i},getBlocksNum:function(){if(this.$$blocksNum===!1){var e=this,t=0;$.each(this.rows,function(i,n){Psc.Code.assertInteger(n.block,"row["+i+"].block in GameTable "+e.getName(),"GameTable.getBlocksNum()");var r=n.block;t=Math.max(r,t)}),this.$$blocksNum=t}return this.$$blocksNum},getRandomInt:function(e,t){return Psc.Numbers.randomInt(e,t)},toString:function(){return"[tiptoi.GameTable]"},shuffle:function(e){return e.sort(function(){return.5-Math.random()}),e}}})}),define("tiptoi/ProgramRunner",["joose","jquery","stacktrace","tiptoi/SimpleSoundPlayer","tiptoi/Program","tiptoi/cpu","tiptoi/GameTable","tiptoi/Sound","tiptoi/StringOutput","Psc/InvalidArgumentException","Psc/Code"],function(Joose,$,printStackTrace){Joose.Class("tiptoi.ProgramRunner",{does:[Psc.EventDispatching],has:{soundPlayer:{is:"rw",required:!1,isPrivate:!0},inputProvider:{is:"rw",required:!0,isPrivate:!0},cpu:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(e){e.soundPlayer||(this.$$soundPlayer=new tiptoi.SimpleSoundPlayer({eventManager:this.getEventManager(),onPlay:function(){}})),e.cpu||(this.$$cpu=new tiptoi.cpu({inputProvider:this.getInputProvider(),eventManager:this.getEventManager()}))}},methods:{run:function(e){if(!Psc.Code.isInstanceOf(e,tiptoi.Program))throw new Psc.InvalidArgumentException("program","Instance of tiptoiProgram",e,"ProgramRunner::run()");this.$$eventManager;var t=this.$$soundPlayer,i=$.Deferred(),n=this.$$cpu,r={playSound:function(e){t.playSound(e)},playQuestionSound:function(e){t.playSound(e,"question")},playSounds:function(e){t.playSounds(e)},playRandomSound:function(e){t.playRandomSound(e)},tiptoi:n,A:{contains:function(e,t){if(!e)throw new Psc.InvalidArgumentException("array","array",e,"A.contains in tiptoi Programm");if(Psc.Code.isArray(e))return Joose.A.exists(e,t);for(var i in e)if(e[i]==t)return!0;return!1},remove:function(e,t){if(!e)throw new Psc.InvalidArgumentException("array","array",e,"A.remove in tiptoi Programm");for(var i=0,n=e.length;n>i;i++)if(e[i]===t)return e.splice(i,1),void 0},copy:function(e){for(var t=[],i=0,n=e.length;n>i;i++)t.push(e[i]);return t},shuffle:function(e){if(!e.sort)throw new Error("Das objekt hat keine Funktion .sort und ist deshalb kein Array. (Parameter von Shuffle)");return e.sort(function(){return.5-Math.random()}),e},range:function(e,t){for(var i=[],n=e;t>=n;n++)i.push(n);return i}},random:Psc.Numbers.randomInt,chooseRandom:function(e){var t=Psc.Numbers.randomInt(0,e.lenght-1);return e[t]},debug:Psc.Code.debug};$.each(e.getTables(),function(e,t){Psc.Code.assertArray(t,"rows in Table: "+e,"ProgramRunner.run()"),r[e+"Table"]=new tiptoi.GameTable({rows:t,name:e})});var s=[],o=[];Joose.O.eachOwn(r,function(e,t){s.push(t),o.push(e)}),r.sounds=$.extend({},this.getCommonSounds(),e.getSounds()),$.extend(r,this.getCommonSounds());var a=this.compile(e,s,r),l="";return new tiptoi.StringOutput({eventManager:n.getEventManager(),pipe:function(e){l+=e+"\n"}}),n.getEventManager().on("tiptoi-end",function(){i.resolve(!0)}),setTimeout(function(){i.notify(n),n.start(e);try{a.apply(r,o)}catch(t){Psc.Code.warning("Fehler beim Ausführen von jSprogram",t,printStackTrace({e:t})),Psc.Code.debug(l),i.reject(t)}},1),i.promise()},getCommonSounds:function(){return{gameButtonSound:new tiptoi.Sound({content:"Game-Button-Sound",number:"091104ak009"}),rightSound:new tiptoi.Sound({content:"Right-Sound",number:"091104ak004"}),tusch:new tiptoi.Sound({content:"Tusch",number:"110207md5"}),wrongSound:new tiptoi.Sound({content:"Wrong-Sound",number:"091104ak005"}),pause:new tiptoi.Sound({content:"0,3 sec. Silent-Pause",number:"091104ak000"}),tickingSound:new tiptoi.Sound({content:"Ticking Sound",number:"101019js000"})}},compile:function(program,exports,programScope){for(var pCode=program.getCode(),soundsRx=/(this|that)\.sounds\.([a-zA-Z0-9]+)/g,match;match=soundsRx.exec(pCode);)programScope.sounds[match[2]]||(programScope.sounds[match[2]]=[]);var jsProgram;return eval("jsProgram = function("+exports.join(",")+") {"+pCode+"};"),jsProgram}}})}),define("tiptoi/InteractiveInputProvider",["joose","Psc/Code","Psc/EventDispatching","Psc/UI/WidgetWrapper"],function(e){e.Class("tiptoi.InteractiveInputProvider",{isa:Psc.UI.WidgetWrapper,does:[Psc.EventDispatching],has:{handlers:{is:"rw",required:!1,isPrivate:!0,init:1},deferred:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){var e=this,t=this.unwrap(),i=this.getEventManager();t.on("tiptoi-tip",function(n,r){var s=e.getDeferred();void 0!==s?(n.preventDefault(),n.stopPropagation(),i.triggerEvent("input-provider-got-input",{provider:this},[r,t]),r&&r.oid?s.resolve(r.oid):s.reject("unbekanntes tiptoi-tip event")):Psc.Code.warning("Deferred ist nicht gesetzt gewesen, dropping event")})}},methods:{getInput:function(){var e=this,t=this.unwrap(),i=this.getEventManager(),n=this.$$handlers++;return this.$$deferred=$.Deferred(),setTimeout(function(){i.triggerEvent("input-provider-listening",{provider:e,handler:n},[t])},1),this.$$deferred.promise()},toString:function(){return"[tiptoi.InteractiveInputProvider]"}}})}),define("tiptoi/GameSimulator",["joose","jquery","tiptoi/StringOutput","tiptoi/HTMLOutput","tiptoi/ProgramRunner","tiptoi/SimpleSoundPlayer","tiptoi/InteractiveInputProvider","Psc/EventManager","Psc/Code","Psc/EventDispatching"],function(e){e.Class("tiptoi.GameSimulator",{does:[Psc.EventDispatching],has:{output:{is:"rw",required:!0,isPrivate:!0},runner:{is:"rw",required:!1,isPrivate:!0},startButton:{is:"rw",required:!0,isPrivate:!0},runStatus:{is:"rw",required:!1,isPrivate:!0},program:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(e){if(!e.runner){if(!e.layout)throw new Psc.Exception("Wenn kein runner an GameSimulator übergeben wird, muss layout (jquery container mit den buttons) übergeben werden");this.$$runner=new tiptoi.ProgramRunner({eventManager:this.getEventManager(),inputProvider:new tiptoi.InteractiveInputProvider({widget:e.layout,eventManager:this.getEventManager()})})}Psc.Code.isInstanceOf(e.output,tiptoi.StringOutput)||(this.$$output=new tiptoi.HTMLOutput({widget:e.output,eventManager:this.getEventManager()})),this.attachHandlers()}},methods:{attachHandlers:function(){var e=this;this.$$eventManager,this.$$startButton.on("click",function(t){t.preventDefault(),e.reset();try{e.setRunStatus(e.getRunner().run(e.createProgram()))}catch(i){Psc.Code.error(i.message+"\n"+"Möglicherweise fehlen Sounds, die im Spiel verwendet werden oder der Program Code selbst hat einen Fehler."+"\n\n")}})},reset:function(){this.getOutput().reset(),this.$$runStatus&&this.$$runStatus.reject&&this.$$runStatus.reject("reset von GameSimulator")},createProgram:function(){return this.$$program},setRunStatus:function(e){this.$$runStatus=e,e.fail(function(e){alert("Es befindet sich ein Fehler im Spiel. Es kann auch sein, dass dies ein Interner Fehler ist. Fehlermeldung:\n\n"+e.message+"\n")})},toString:function(){return"[tiptoi.GameSimulator]"}}})}),define("Psc/UI/Group",["joose","Psc/UI/HTML/Base"],function(e){e.Class("Psc.UI.Group",{does:[Psc.UI.HTML.Base],has:{label:{is:"rw",required:!0,isPrivate:!0},content:{is:"rw",required:!1,isPrivate:!0}},methods:{refresh:function(){this.$$html?this.$$html.find("fieldset").find("> legend").html(this.$$label).end().find("> div.content").html(this.$$content).end():(this.$$html=$('<fieldset class="psc-cms-ui-group ui-corner-all ui-widget-content"><legend>'+this.$$label+'</legend><div class="content"></div></div>'),this.$$content&&this.getContentTag().append(this.$$content))},getContentTag:function(){return this.$$html.find("> div.content")},toString:function(){return"[Psc.UI.Group]"}}})}),define("Psc/AjaxResponseErrorHandler",["joose","Psc/UI/ErrorPane","Psc/UI/Dialog","Psc/ResponseMetaReader","Psc/UI/Group"],function(e){e.Class("Psc.AjaxResponseErrorHandler",{my:{methods:{openDialog:function(e){var t=new Psc.AjaxResponseErrorHandler({response:e});return t.createDialog().open()}}},has:{response:{is:"r",required:!0,isPrivate:!0}},methods:{getErrorMessage:function(){var e,t=this.$$response.getHeader();return e="true"===t["X-Psc-CMS-Error"]?t["X-Psc-CMS-Error-Message"]:this.$$response.getBody(),e.replace(/\n/,"<br />\n").substring(0,300)},createDialog:function(){var e=this,t=new Psc.UI.Dialog({title:"Ein Fehler ist aufgetreten",closeButton:"schließen",width:"50%",onCreate:function(t,i){i.setContent($('<div class="psc-cms-ui-error-pane" />').append(e.getErrorMessage()))}});return t},appendErrorPane:function(e){var t=this;return new Psc.UI.ErrorPane({label:"Error",container:e,errorMessage:t.getErrorMessage()})}}})}),define("tiptoi/TitoGameEditor",["joose","jquery","Psc/TableModel","Psc/EventDispatching","Psc/CMS/FastItem","Psc/UI/EffectsManaging","Psc/UI/Button","Psc/Numbers","Psc/UI/Dialog","Psc/UI/WidgetWrapper","Psc/AjaxResponseErrorHandler"],function(e,t){e.Class("tiptoi.TitoGameEditor",{isa:Psc.UI.WidgetWrapper,does:[Psc.EventDispatching,Psc.UI.EffectsManaging],has:{service:{is:"rw",required:!0,isPrivate:!0},tito:{is:"rw",required:!0,isPrivate:!0},gameNum:{is:"rw",required:!0,isPrivate:!0}},after:{initialize:function(){this.checkWidget(),this.linkWidget(),this.initUI()}},methods:{initUI:function(){var e,i=this,n=this.unwrap(),r=n.find("fieldset:eq(0) div.content").first(),s=new Psc.UI.Button({label:"Sounds in die Datenbank übernehmen und Texte aktualisieren",leftIcon:"disk"}),o=t('<div class="psc-cms-ui-buttonset psc-cms-ui-buttonset-right"></div>').css("float","right");return o.append(e=s.create().addClass("sync-button")),r.append(o),o.after('<div class="clear" />'),e.on("click",function(t){t.preventDefault(),t.stopPropagation(),i.$$service.dispatch(i.$$service.createRequest(["tito","synchronize"],"POST",{gameNum:i.getGameNum()},"json")).done(function(t){i.setTito(t.getBody().tito),r.find("pre").remove(),i.loadCode(r),i.getEffectsManager().successBlink(e)}).fail(function(t){i.getEffectsManager().errorBlink(e);var n=Psc.AjaxResponseErrorHandler.openDialog(t);i._trigger("error",[t,n])})}),i.loadCode(r),this},loadCode:function(e){var t=this;this.$$service.dispatch(this.$$service.createRequest(["tito","highlight"],"POST",{tito:t.$$tito},"html")).done(function(i){e.append('<pre style="overflow:hidden">'+i.getBody()+"</pre>"),t.loadButtons(),t._trigger("code-loaded",[i.getBody()])})},loadButtons:function(){var e=this;e.findCode().find("span.token-sound.real").each(function(i,n){var r=t(n),s=r.attr("data-ident");if(s){var o=new Psc.UI.Button({label:r.html()}),a=o.create(),l=e.$$service.createRequest(["sound",s,"form"]).getUrl();r.replaceWith(a),new Psc.CMS.FastItem({widget:a,button:{label:o.getLabel(),mode:1},identifier:s,entityName:"sound",tab:{label:r.attr("data-text")+" ("+s+")",id:l.replace(/\//g,"-").substr(1),url:l}})}})},findCode:function(){return this.unwrap().find("fieldset:eq(0) div.content pre")},toString:function(){return"[tiptoi.GameEditor]"},_trigger:function(e,t){return this.getEventManager().triggerEvent(e,{},t)}}})}); | ||
define("tiptoi/Main",["joose","Psc/Request","Psc/Code","Psc/UI/WidgetWrapper"],function(e){e.Class("tiptoi.Main",{isa:Psc.UI.WidgetWrapper,has:{productName:{is:"rw",required:!0,isPrivate:!0},main:{is:"rw",required:!0,isPrivate:!0,handles:["handleAjaxRequest"]}},after:{initialize:function(){this.$$main.register(this,"tiptoiMain")}},methods:{createAction:function(e){return this.$$main.handleAjaxRequest(this.createRequest(["matrix-manager","create-action"],"GET",e,"html"))},createTransition:function(e){return this.$$main.handleAjaxRequest(this.createRequest(["matrix-manager","create-transition"],"GET",e,"html"))},dispatch:function(e){return this.$$main.handleAjaxRequest(e)},createRequest:function(e,t,i,n,r){t||(t="GET"),n||(n="json");var s=new Psc.Request({url:"/api/product/"+this.$$productName+"/"+e.join("/"),method:t,body:i,format:n,sendAs:r});return s},toString:function(){return"[tiptoi.Main]"}}})}),define("tiptoi/Timer",["joose","jquery"],function(e,t){e.Class("tiptoi.Timer",{has:{deferred:{is:"rw",required:!1,isPrivate:!0},timeout:{is:"rw",required:!1,isPrivate:!0},seconds:{is:"rw",required:!0,isPrivate:!0}},methods:{getTime:function(){return 1e3*this.$$seconds},start:function(){this.stop();var e=t.Deferred();return this.$$deferred=e,this.$$timeout=window.setTimeout(function(){e.reject()},this.getTime()),e.promise()},hasRunOut:function(e){this.$$deferred&&this.$$deferred.fail(e)},stop:function(){this.$$deferred&&(window.clearTimeout(this.$$timeout),this.$$deferred.resolve())},toString:function(){return"[tiptoi.Timer]"}}})}),define("tiptoi/Sound",["joose","jquery"],function(e,t){e.Class("tiptoi.Sound",{has:{content:{is:"rw",required:!0,isPrivate:!0},number:{is:"rw",required:!0,isPrivate:!0},speakers:{is:"rw",required:!1,isPrivate:!0}},my:{methods:{list:function(e){var i=[];return t.each(e,function(e,t){i.push(new tiptoi.Sound({content:t[0],number:t[1]}))}),i}}},methods:{toString:function(){return this.$$content?"„"+this.$$content+"“ ("+this.$$number+")":"[tiptoi.Sound]"}}})}),define("tiptoi/cpu",["joose","tiptoi/Timer","Psc/EventDispatching","tiptoi/Sound"],function(e){e.Class("tiptoi.cpu",{does:[Psc.EventDispatching],has:{eventManager:{is:"rw",required:!1,isPrivate:!0,handles:["on","one","off"]},inputProvider:{is:"rw",required:!0,isPrivate:!0},startedTimers:{is:"rw",required:!0,isPrivate:!0,init:e.I.Array}},methods:{start:function(e){this._trigger("start",[this,e])},waitForInput:function(e){var t=this;this._trigger("waiting-for-input"),$.when(this.$$inputProvider.getInput()).then(function(i){t._trigger("input-given",["OID",i]);try{e(i)}catch(n){t._trigger("crash",[n]),t.end()}})},waitForInputWithTimer:function(e,t){var i=this;this._trigger("waiting-for-input-with-timer",[e]);var n=!1;e.hasRunOut(function(){n=!0}),$.when(this.$$inputProvider.getInput()).then(function(e){if(n)i._trigger("input-ignored",["timedout","OID",e]);else{i._trigger("input-given",["OID",e]);try{t(e)}catch(r){i._trigger("crash",[r]),i.end()}}})},require:function(e,t){for(var i=e.length-1;i>=0;i--)e[i]="gdl/"+e[i].replace(/\./g,"/");return require(e,t)},startTimer:function(e){var t=new tiptoi.Timer({seconds:e});return this.$$startedTimers.push(t),this._trigger("start-timer",[t]),t.start(),t},evaluate:function(){this._trigger("evaluate",arguments)},startGame:function(e){this._trigger("start-game",[e])},createSound:function(e){return new tiptoi.Sound(e)},end:function(){for(var e,t=0;t<this.$$startedTimers.length;t++)e=this.$$startedTimers[t],e.stop();this._trigger("end",[this])},_trigger:function(e,t){t=t||[],this.getEventManager().triggerEvent("tiptoi-"+e,{tiptoi:this},t)},toString:function(){return"[tiptoi.cpu]"}}})}),define("tiptoi/StringOutput",["joose","Psc/Code","tiptoi/cpu","Psc/Exception"],function(e){e.Class("tiptoi.StringOutput",{has:{eventManager:{is:"rw",required:!0,isPrivate:!0},pipe:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){if(!Psc.Code.isFunction(this.$$pipe))throw new Psc.Exception("ableitende Klasse für StringOutput muss pipe auf eine function setzen: "+this.toString());this.initEvents()}},methods:{initEvents:function(){var e=this.getEventManager(),t=this.getPipe();e.on({"play-sounds":function(e,i,n){t(i.join("\n + "),e.type,[n])},"play-sound":function(e,i,n){t(i.toString(),e.type,[n])},"tiptoi-waiting-for-input":function(e){t("tiptoi wartet auf input...",e.type)},"tiptoi-waiting-for-input-with-timer":function(e,i){t("tiptoi wartet auf input "+i.getSeconds()+" Sekunde(n) timeout...",e.type)},"tiptoi-input-given":function(e,i,n){t("getippt wurde: "+i+": "+n,e.type)},"tiptoi-crash":function(e,i){var n=i.message||i.getMessage();t("ERROR: tiptoi ist gecrasht wegen Programmierfehler: "+n,e.type)},"tiptoi-start-game":function(e,i){i||(i="(nicht angegeben)"),t("tiptoi würde Spiel "+i+" starten. Dies ist jedoch im Simulator nicht möglich.")},"tiptoi-start-timer":function(e,i){t("Starte timer mit "+i.getSeconds()+" Sekunden..")},"tiptoi-evaluate":function(e,i){t("Evaluation von "+i+" richtigen Antworten",e.type)},"tiptoi-start":function(e,i,n){t("Spiel „"+n.getName()+"“ startet",e.type)},"tiptoi-end":function(e){t("Spiel beendet",e.type)}})},reset:function(){},toString:function(){return"[tiptoi.StringOutput]"}}})}),define("tiptoi/HTMLOutput",["joose","tiptoi/StringOutput"],function(e){e.Class("tiptoi.HTMLOutput",{isa:tiptoi.StringOutput,has:{widget:{is:"rw",required:!0,isPrivate:!0}},before:{initialize:function(){var e=this,t=this.getEventManager(),i=this.$$widget;this.$$pipe=function(e,t,n){if("tiptoi-input-given"===t)return!1;var r=$('<p class="'+t+'">'+e+"</p>");return"play-sound"===t||"play-sounds"===t?(-1!==e.search(/Wrong-Sound/)&&r.addClass("wrong-sound"),-1!==e.search(/(Right-Sound|tusch)/i)&&r.addClass("right-sound"),n&&"question"===n[0]&&r.addClass("question-sound")):"crash"===t&&r.addClass("crash"),i.append(r)},t.on("input-provider-listening",function(){var e=i.find("p.tiptoi-waiting-for-input").last();e.effect("pulsate",[300],2500)}),t.on("input-provider-got-input",function(t,n){var r=i.find("p.tiptoi-waiting-for-input");e.stopFlashing(r,n)}),t.on("tiptoi-end",function(){var t=i.find("p.tiptoi-waiting-for-input");e.stopFlashing(t,{oid:0,label:"keine, da Spiel beendet"})})}},methods:{reset:function(){this.$$widget.empty()},stopFlashing:function(e,t){e.stop(!0).queue(function(){e.css("opacity",1).removeClass("tiptoi-waiting-for-input").addClass("tiptoi-waited-for-input").html("getippt wurde: "+t.oid+" "+t.label)})},toString:function(){return"[tiptoi.HTMLOutput]"}}})}),define("Psc/Numbers",["joose"],function(e){e.Class("Psc.Numbers",{has:{},my:{methods:{randomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},formatBytes:function(e){return"number"!=typeof e?"":e>=1e9?(e/1e9).toFixed(2)+" GB":e>=1e6?(e/1e6).toFixed(2)+" MB":(e/1e3).toFixed(2)+" KB"}}},methods:{toString:function(){return"[Psc.Numbers]"}}})}),define("tiptoi/SimpleSoundPlayer",["joose","jquery","Psc/Code","tiptoi/Sound","Psc/Numbers","Psc/EventDispatching"],function(e){e.Class("tiptoi.SimpleSoundPlayer",{does:[Psc.EventDispatching],has:{onPlay:{is:"rw",required:!0,isPrivate:!0}},methods:{playSound:function(e,t){e&&(t||(t="normal"),e=this.normalizeSound(e),this.$$eventManager.triggerEvent("play-sound",{},[e,t]),this.$$onPlay.apply(this,[[e]]))},playSounds:function(e){e&&e.length&&(e=this.normalizeSounds(e),this.$$eventManager.triggerEvent("play-sounds",{},[e]),this.$$onPlay.apply(this,[e]))},playRandomSound:function(e){if(e&&e.length){e=this.normalizeSounds(e);var t=Psc.Numbers.randomInt(0,e.length-1),i=e[t];this.$$eventManager.triggerEvent("play-sound",{},[i]),this.$$onPlay.apply(this,[e])}},normalizeSounds:function(e){for(var t=[],i=0,n=e.length;n>i;i++)t.push(this.normalizeSound(e[i]));return t},normalizeSound:function(e){return Psc.Code.isArray(e)&&2===e.length?new tiptoi.Sound({content:e[0],number:e[1]}):"string"==typeof e?new tiptoi.Sound({content:e,number:null}):Psc.Code.isInstanceOf(e,tiptoi.Sound)?e:"object"==typeof e?new tiptoi.Sound(e):new tiptoi.Sound({content:e,number:null})}}})}),define("tiptoi/Program",["joose"],function(e){e.Class("tiptoi.Program",{has:{code:{is:"rw",required:!0,isPrivate:!0},tables:{is:"rw",required:!1,isPrivate:!0,init:e.I.Object},sounds:{is:"rw",required:!1,isPrivate:!0,init:e.I.Object},name:{is:"rw",required:!1,isPrivate:!0}},methods:{setTable:function(e,t){return this.$$tables[e]=t,this},setSound:function(e,t){return this.$$sounds[e]=t,this},setSounds:function(e,t){return this.$$sounds[e]=t,this},setSoundsList:function(e,t){return this.setSounds(e,tiptoi.Sound.list(t))}}})}),define("tiptoi/GameTable",["joose","Psc/Numbers","Psc/Code"],function(e){e.Class("tiptoi.GameTable",{has:{rows:{is:"rw",required:!0,isPrivate:!1},name:{is:"rw",required:!0,isPrivate:!0},blocksNum:{is:"rw",required:!1,isPrivate:!0,init:!1},rowsLeft:{is:"rw",required:!1,isPrivate:!0},blockNumsLeft:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){Psc.Code.assertArray(this.rows,"this.rows","GameTable.chooseRandomBlock()"),this.$$rowsLeft=this.shuffle(this.rows.slice())}},methods:{getRow:function(e){return this.rows[e]},chooseNotYetUsedRandomRow:function(){return this.$$rowsLeft.pop()},chooseNotYetUsedRandomBlock:function(){if(!this.$$blockNumsLeft){this.$$blockNumsLeft=[];for(var e=1,t=this.getBlocksNum();t>=e;e++)this.$$blockNumsLeft.push(e);this.shuffle(this.$$blockNumsLeft)}var i=this.$$blockNumsLeft.pop();return void 0!==i?this.getBlock(i):void 0},chooseRandomBlock:function(){var e=this.getBlocksNum(),t=this.getRandomInt(1,e);return this.getBlock(t)},chooseRandomRow:function(){var e=this.getRandomInt(0,this.rows.length-1);return this.rows[e]},getBlock:function(e){e=Math.max(1,e);var t=this.getBlocksNum(),i=[];if(e>t)throw new Psc.Exception("Den Block "+e+" gibt es im "+this.getName()+"Table nicht");return $.each(this.rows,function(t,n){n.block===e&&i.push(n)}),i},getBlocksNum:function(){if(this.$$blocksNum===!1){var e=this,t=0;$.each(this.rows,function(i,n){Psc.Code.assertInteger(n.block,"row["+i+"].block in GameTable "+e.getName(),"GameTable.getBlocksNum()");var r=n.block;t=Math.max(r,t)}),this.$$blocksNum=t}return this.$$blocksNum},getRandomInt:function(e,t){return Psc.Numbers.randomInt(e,t)},toString:function(){return"[tiptoi.GameTable]"},shuffle:function(e){return e.sort(function(){return.5-Math.random()}),e}}})}),define("tiptoi/ProgramRunner",["joose","lodash","jquery","stacktrace","tiptoi/SimpleSoundPlayer","tiptoi/Program","tiptoi/cpu","tiptoi/GameTable","tiptoi/Sound","tiptoi/StringOutput","Psc/InvalidArgumentException","Psc/Code"],function(Joose,_,$,printStackTrace){Joose.Class("tiptoi.ProgramRunner",{does:[Psc.EventDispatching],has:{soundPlayer:{is:"rw",required:!1,isPrivate:!0},inputProvider:{is:"rw",required:!0,isPrivate:!0},cpu:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(e){e.soundPlayer||(this.$$soundPlayer=new tiptoi.SimpleSoundPlayer({eventManager:this.getEventManager(),onPlay:function(){}})),e.cpu||(this.$$cpu=new tiptoi.cpu({inputProvider:this.getInputProvider(),eventManager:this.getEventManager()}))}},methods:{run:function(e){if(!Psc.Code.isInstanceOf(e,tiptoi.Program))throw new Psc.InvalidArgumentException("program","Instance of tiptoiProgram",e,"ProgramRunner::run()");this.$$eventManager;var t=this.$$soundPlayer,i=$.Deferred(),n=this.$$cpu,r={playSound:function(e){t.playSound(e)},playQuestionSound:function(e){t.playSound(e,"question")},playSounds:function(e){t.playSounds(e)},playRandomSound:function(e){t.playRandomSound(e)},tiptoi:n,A:{contains:function(e,t){if(!e)throw new Psc.InvalidArgumentException("array","array",e,"A.contains in tiptoi Programm");if(Psc.Code.isArray(e))return _.contains(e,t);for(var i in e)if(e[i]==t)return!0;return!1},remove:function(e,t){if(!e)throw new Psc.InvalidArgumentException("array","array",e,"A.remove in tiptoi Programm");for(var i=0,n=e.length;n>i;i++)if(e[i]===t)return e.splice(i,1),void 0},copy:function(e){for(var t=[],i=0,n=e.length;n>i;i++)t.push(e[i]);return t},shuffle:function(e){if(!e.sort)throw new Error("Das objekt hat keine Funktion .sort und ist deshalb kein Array. (Parameter von Shuffle)");return e.sort(function(){return.5-Math.random()}),e},range:function(e,t){for(var i=[],n=e;t>=n;n++)i.push(n);return i}},random:Psc.Numbers.randomInt,chooseRandom:function(e){var t=Psc.Numbers.randomInt(0,e.lenght-1);return e[t]},debug:Psc.Code.debug};$.each(e.getTables(),function(e,t){Psc.Code.assertArray(t,"rows in Table: "+e,"ProgramRunner.run()"),r[e+"Table"]=new tiptoi.GameTable({rows:t,name:e})});var s=[],o=[];_.forOwn(r,function(e,t){s.push(t),o.push(e)}),r.sounds=$.extend({},this.getCommonSounds(),e.getSounds()),$.extend(r,this.getCommonSounds());var a=this.compile(e,s,r),l="";return new tiptoi.StringOutput({eventManager:n.getEventManager(),pipe:function(e){l+=e+"\n"}}),n.getEventManager().on("tiptoi-end",function(){i.resolve(!0)}),setTimeout(function(){i.notify(n),n.start(e);try{a.apply(r,o)}catch(t){Psc.Code.warning("Fehler beim Ausführen von jSprogram",t,printStackTrace({e:t})),Psc.Code.debug(l),i.reject(t)}},1),i.promise()},getCommonSounds:function(){return{gameButtonSound:new tiptoi.Sound({content:"Game-Button-Sound",number:"091104ak009"}),rightSound:new tiptoi.Sound({content:"Right-Sound",number:"091104ak004"}),tusch:new tiptoi.Sound({content:"Tusch",number:"110207md5"}),wrongSound:new tiptoi.Sound({content:"Wrong-Sound",number:"091104ak005"}),pause:new tiptoi.Sound({content:"0,3 sec. Silent-Pause",number:"091104ak000"}),tickingSound:new tiptoi.Sound({content:"Ticking Sound",number:"101019js000"})}},compile:function(program,exports,programScope){for(var pCode=program.getCode(),soundsRx=/(this|that)\.sounds\.([a-zA-Z0-9]+)/g,match;match=soundsRx.exec(pCode);)programScope.sounds[match[2]]||(programScope.sounds[match[2]]=[]);var jsProgram;return eval("jsProgram = function("+exports.join(",")+") {"+pCode+"};"),jsProgram}}})}),define("tiptoi/InteractiveInputProvider",["joose","Psc/Code","Psc/EventDispatching","Psc/UI/WidgetWrapper"],function(e){e.Class("tiptoi.InteractiveInputProvider",{isa:Psc.UI.WidgetWrapper,does:[Psc.EventDispatching],has:{handlers:{is:"rw",required:!1,isPrivate:!0,init:1},deferred:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(){var e=this,t=this.unwrap(),i=this.getEventManager();t.on("tiptoi-tip",function(n,r){var s=e.getDeferred();void 0!==s?(n.preventDefault(),n.stopPropagation(),i.triggerEvent("input-provider-got-input",{provider:this},[r,t]),r&&r.oid?s.resolve(r.oid):s.reject("unbekanntes tiptoi-tip event")):Psc.Code.warning("Deferred ist nicht gesetzt gewesen, dropping event")})}},methods:{getInput:function(){var e=this,t=this.unwrap(),i=this.getEventManager(),n=this.$$handlers++;return this.$$deferred=$.Deferred(),setTimeout(function(){i.triggerEvent("input-provider-listening",{provider:e,handler:n},[t])},1),this.$$deferred.promise()},toString:function(){return"[tiptoi.InteractiveInputProvider]"}}})}),define("tiptoi/GameSimulator",["joose","jquery","tiptoi/StringOutput","tiptoi/HTMLOutput","tiptoi/ProgramRunner","tiptoi/SimpleSoundPlayer","tiptoi/InteractiveInputProvider","Psc/EventManager","Psc/Code","Psc/EventDispatching"],function(e){e.Class("tiptoi.GameSimulator",{does:[Psc.EventDispatching],has:{output:{is:"rw",required:!0,isPrivate:!0},runner:{is:"rw",required:!1,isPrivate:!0},startButton:{is:"rw",required:!0,isPrivate:!0},runStatus:{is:"rw",required:!1,isPrivate:!0},program:{is:"rw",required:!1,isPrivate:!0}},after:{initialize:function(e){if(!e.runner){if(!e.layout)throw new Psc.Exception("Wenn kein runner an GameSimulator übergeben wird, muss layout (jquery container mit den buttons) übergeben werden");this.$$runner=new tiptoi.ProgramRunner({eventManager:this.getEventManager(),inputProvider:new tiptoi.InteractiveInputProvider({widget:e.layout,eventManager:this.getEventManager()})})}Psc.Code.isInstanceOf(e.output,tiptoi.StringOutput)||(this.$$output=new tiptoi.HTMLOutput({widget:e.output,eventManager:this.getEventManager()})),this.attachHandlers()}},methods:{attachHandlers:function(){var e=this;this.$$eventManager,this.$$startButton.on("click",function(t){t.preventDefault(),e.reset();try{e.setRunStatus(e.getRunner().run(e.createProgram()))}catch(i){Psc.Code.error(i.message+"\n"+"Möglicherweise fehlen Sounds, die im Spiel verwendet werden oder der Program Code selbst hat einen Fehler."+"\n\n")}})},reset:function(){this.getOutput().reset(),this.$$runStatus&&this.$$runStatus.reject&&this.$$runStatus.reject("reset von GameSimulator")},createProgram:function(){return this.$$program},setRunStatus:function(e){this.$$runStatus=e,e.fail(function(e){alert("Es befindet sich ein Fehler im Spiel. Es kann auch sein, dass dies ein Interner Fehler ist. Fehlermeldung:\n\n"+e.message+"\n")})},toString:function(){return"[tiptoi.GameSimulator]"}}})}),define("Psc/UI/Group",["joose","Psc/UI/HTML/Base"],function(e){e.Class("Psc.UI.Group",{does:[Psc.UI.HTML.Base],has:{label:{is:"rw",required:!0,isPrivate:!0},content:{is:"rw",required:!1,isPrivate:!0}},methods:{refresh:function(){this.$$html?this.$$html.find("fieldset").find("> legend").html(this.$$label).end().find("> div.content").html(this.$$content).end():(this.$$html=$('<fieldset class="psc-cms-ui-group ui-corner-all ui-widget-content"><legend>'+this.$$label+'</legend><div class="content"></div></div>'),this.$$content&&this.getContentTag().append(this.$$content))},getContentTag:function(){return this.$$html.find("> div.content")},toString:function(){return"[Psc.UI.Group]"}}})}),define("Psc/AjaxResponseErrorHandler",["joose","Psc/UI/ErrorPane","Psc/UI/Dialog","Psc/ResponseMetaReader","Psc/UI/Group"],function(e){e.Class("Psc.AjaxResponseErrorHandler",{my:{methods:{openDialog:function(e){var t=new Psc.AjaxResponseErrorHandler({response:e});return t.createDialog().open()}}},has:{response:{is:"r",required:!0,isPrivate:!0}},methods:{getErrorMessage:function(){var e,t=this.$$response.getHeader();return e="true"===t["X-Psc-CMS-Error"]?t["X-Psc-CMS-Error-Message"]:this.$$response.getBody(),e.replace(/\n/,"<br />\n").substring(0,300)},createDialog:function(){var e=this,t=new Psc.UI.Dialog({title:"Ein Fehler ist aufgetreten",closeButton:"schließen",width:"50%",onCreate:function(t,i){i.setContent($('<div class="psc-cms-ui-error-pane" />').append(e.getErrorMessage()))}});return t},appendErrorPane:function(e){var t=this;return new Psc.UI.ErrorPane({label:"Error",container:e,errorMessage:t.getErrorMessage()})}}})}),define("tiptoi/TitoGameEditor",["joose","jquery","Psc/TableModel","Psc/EventDispatching","Psc/CMS/FastItem","Psc/UI/EffectsManaging","Psc/UI/Button","Psc/Numbers","Psc/UI/Dialog","Psc/UI/WidgetWrapper","Psc/AjaxResponseErrorHandler"],function(e,t){e.Class("tiptoi.TitoGameEditor",{isa:Psc.UI.WidgetWrapper,does:[Psc.EventDispatching,Psc.UI.EffectsManaging],has:{service:{is:"rw",required:!0,isPrivate:!0},tito:{is:"rw",required:!0,isPrivate:!0},gameNum:{is:"rw",required:!0,isPrivate:!0}},after:{initialize:function(){this.checkWidget(),this.linkWidget(),this.initUI()}},methods:{initUI:function(){var e,i=this,n=this.unwrap(),r=n.find("fieldset:eq(0) div.content").first(),s=new Psc.UI.Button({label:"Sounds in die Datenbank übernehmen und Texte aktualisieren",leftIcon:"disk"}),o=t('<div class="psc-cms-ui-buttonset psc-cms-ui-buttonset-right"></div>').css("float","right");return o.append(e=s.create().addClass("sync-button")),r.append(o),o.after('<div class="clear" />'),e.on("click",function(t){t.preventDefault(),t.stopPropagation(),i.$$service.dispatch(i.$$service.createRequest(["tito","synchronize"],"POST",{gameNum:i.getGameNum()},"json")).done(function(t){i.setTito(t.getBody().tito),r.find("pre").remove(),i.loadCode(r),i.getEffectsManager().successBlink(e)}).fail(function(t){i.getEffectsManager().errorBlink(e);var n=Psc.AjaxResponseErrorHandler.openDialog(t);i._trigger("error",[t,n])})}),i.loadCode(r),this},loadCode:function(e){var t=this;this.$$service.dispatch(this.$$service.createRequest(["tito","highlight"],"POST",{tito:t.$$tito},"html")).done(function(i){e.append('<pre style="overflow:hidden">'+i.getBody()+"</pre>"),t.loadButtons(),t._trigger("code-loaded",[i.getBody()])})},loadButtons:function(){var e=this;e.findCode().find("span.token-sound.real").each(function(i,n){var r=t(n),s=r.attr("data-ident");if(s){var o=new Psc.UI.Button({label:r.html()}),a=o.create(),l=e.$$service.createRequest(["sound",s,"form"]).getUrl();r.replaceWith(a),new Psc.CMS.FastItem({widget:a,button:{label:o.getLabel(),mode:1},identifier:s,entityName:"sound",tab:{label:r.attr("data-text")+" ("+s+")",id:l.replace(/\//g,"-").substr(1),url:l}})}})},findCode:function(){return this.unwrap().find("fieldset:eq(0) div.content pre")},toString:function(){return"[tiptoi.GameEditor]"},_trigger:function(e,t){return this.getEventManager().triggerEvent(e,{},t)}}})}); |
/*jshint evil:true*/ | ||
define(['joose', 'jquery', 'stacktrace','tiptoi/SimpleSoundPlayer','tiptoi/Program', 'tiptoi/cpu', 'tiptoi/GameTable', 'tiptoi/Sound', 'tiptoi/StringOutput', | ||
'Psc/InvalidArgumentException', 'Psc/Code'], function (Joose, $, printStackTrace) { | ||
define(['joose', 'lodash', 'jquery', 'stacktrace','tiptoi/SimpleSoundPlayer','tiptoi/Program', 'tiptoi/cpu', 'tiptoi/GameTable', 'tiptoi/Sound', 'tiptoi/StringOutput', | ||
'Psc/InvalidArgumentException', 'Psc/Code'], function (Joose, _, $, printStackTrace) { | ||
@@ -73,3 +73,3 @@ Joose.Class('tiptoi.ProgramRunner', { | ||
if (Psc.Code.isArray(array)) { | ||
return Joose.A.exists(array, value); | ||
return _.contains(array, value); | ||
} else { | ||
@@ -145,3 +145,3 @@ for (var key in array) { | ||
// übernehme alle properties aus dem scope als globale variablen für das Program | ||
Joose.O.eachOwn(programScope, function (parameter, paramName) { | ||
_.forOwn(programScope, function (parameter, paramName) { | ||
exports.push(paramName); | ||
@@ -148,0 +148,0 @@ parameters.push(parameter); |
{ | ||
"name": "psc-cms-js", | ||
"description": "js library for Psc CMS (pscheit/psc-cms). shim reposistory for builds.", | ||
"keywords": ["cms", "framework"], | ||
"keywords": [ | ||
"cms", | ||
"framework" | ||
], | ||
"homepage": "http://www.ps-webforge.com/", | ||
"author": "Philipp Scheit <p.scheit@ps-webforge.com", | ||
"contributors": ["Yulia Bobkova <y.bobkova@ps-webforge.com"], | ||
"contributors": [ | ||
"Yulia Bobkova <y.bobkova@ps-webforge.com" | ||
], | ||
"licence": "LGPL", | ||
"version": "1.3.0", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/pscheit/psc-cms-js.git" | ||
}, | ||
"version": "1.4.0-5082004", | ||
"config": { | ||
"branch-alias": { | ||
"dev-master": "1.4.x-dev" | ||
} | ||
}, | ||
"scripts": { | ||
@@ -20,4 +34,8 @@ "test": "grunt travis" | ||
"grunt-contrib-connect": "~0.2", | ||
"grunt-contrib-requirejs": "~0.4.1" | ||
"grunt-contrib-requirejs": "~0.4.1", | ||
"grunt-blanket-qunit": "~0.2.0", | ||
"semver": "~2.1.0", | ||
"npm": "~1.3.9", | ||
"process": "~0.5.1" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
20796562
1307
373106
147
11
8