├── fonts ├── MI.TTF ├── Badaboom.ttf ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── icons ├── cc.png ├── arrow.png ├── bocca.png ├── cursor.png ├── exit.png ├── mano.png ├── occhi.png ├── arrow-up.png ├── cogwheel.png ├── cursor2.png ├── scissors.png ├── arrow-down.png ├── bocca-hover.png ├── depth-icon.png ├── mano-hover.png ├── occhi-hover.png ├── coord_picker.png ├── cursor-small.png ├── arrow-down-hover.png ├── arrow-up-hover.png ├── cogwheel-hover.png └── shoe-print-large-hi.png ├── css ├── select2.png ├── select2x2.png ├── jstree │ ├── 32px.png │ ├── 40px.png │ └── throbber.gif ├── select2-spinner.gif ├── jquery.inputfile.css ├── context.bootstrap.css ├── uploadfile.min.css ├── select2-bootstrap.css └── codemirror.css ├── bootstrap3-editable └── img │ ├── clear.png │ └── loading.gif ├── LICENSE.md ├── inputs-ext ├── address │ ├── address.css │ └── address.js ├── wysihtml5 │ ├── bootstrap-wysihtml5-0.0.2 │ │ ├── wysiwyg-color.css │ │ ├── bootstrap-wysihtml5-0.0.2.css │ │ └── bootstrap-wysihtml5-0.0.2.min.js │ └── wysihtml5.js └── typeaheadjs │ ├── lib │ └── typeahead.js-bootstrap.css │ └── typeaheadjs.js ├── js ├── variables-manager.js ├── audio-manager.js ├── character-manager.js ├── inventory-manager.js ├── dialog-manager.js ├── anims-manager.js ├── action-manager.js ├── jquery.inputfile.js ├── bootstrap.file-input.js ├── bootstrap-collapse.js ├── context.js ├── pathfinding.js ├── jquery-upload-file.php ├── room-manager.js ├── jquery.uploadfile.min.js ├── deepCopy.js ├── walkbox-manager.js ├── canvas-manager.js ├── utils.js ├── script-manager.js ├── project.js └── sideEffects-manager.js └── README.md /fonts/MI.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/MI.TTF -------------------------------------------------------------------------------- /icons/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cc.png -------------------------------------------------------------------------------- /css/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/select2.png -------------------------------------------------------------------------------- /icons/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/arrow.png -------------------------------------------------------------------------------- /icons/bocca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/bocca.png -------------------------------------------------------------------------------- /icons/cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cursor.png -------------------------------------------------------------------------------- /icons/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/exit.png -------------------------------------------------------------------------------- /icons/mano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/mano.png -------------------------------------------------------------------------------- /icons/occhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/occhi.png -------------------------------------------------------------------------------- /css/select2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/select2x2.png -------------------------------------------------------------------------------- /fonts/Badaboom.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/Badaboom.ttf -------------------------------------------------------------------------------- /icons/arrow-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/arrow-up.png -------------------------------------------------------------------------------- /icons/cogwheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cogwheel.png -------------------------------------------------------------------------------- /icons/cursor2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cursor2.png -------------------------------------------------------------------------------- /icons/scissors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/scissors.png -------------------------------------------------------------------------------- /css/jstree/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/jstree/32px.png -------------------------------------------------------------------------------- /css/jstree/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/jstree/40px.png -------------------------------------------------------------------------------- /icons/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/arrow-down.png -------------------------------------------------------------------------------- /icons/bocca-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/bocca-hover.png -------------------------------------------------------------------------------- /icons/depth-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/depth-icon.png -------------------------------------------------------------------------------- /icons/mano-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/mano-hover.png -------------------------------------------------------------------------------- /icons/occhi-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/occhi-hover.png -------------------------------------------------------------------------------- /css/jstree/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/jstree/throbber.gif -------------------------------------------------------------------------------- /css/select2-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/css/select2-spinner.gif -------------------------------------------------------------------------------- /icons/coord_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/coord_picker.png -------------------------------------------------------------------------------- /icons/cursor-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cursor-small.png -------------------------------------------------------------------------------- /icons/arrow-down-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/arrow-down-hover.png -------------------------------------------------------------------------------- /icons/arrow-up-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/arrow-up-hover.png -------------------------------------------------------------------------------- /icons/cogwheel-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/cogwheel-hover.png -------------------------------------------------------------------------------- /icons/shoe-print-large-hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/icons/shoe-print-large-hi.png -------------------------------------------------------------------------------- /bootstrap3-editable/img/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/bootstrap3-editable/img/clear.png -------------------------------------------------------------------------------- /bootstrap3-editable/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/bootstrap3-editable/img/loading.gif -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RumRogers/GAUSS/HEAD/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution 4.0 International License. 2 | To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/. 3 | -------------------------------------------------------------------------------- /inputs-ext/address/address.css: -------------------------------------------------------------------------------- 1 | .editable-address { 2 | display: block; 3 | margin-bottom: 5px; 4 | } 5 | 6 | .editable-address span { 7 | width: 70px; 8 | display: inline-block; 9 | } -------------------------------------------------------------------------------- /js/variables-manager.js: -------------------------------------------------------------------------------- 1 | var editorGameVars = {}; 2 | 3 | var addGameVar = function(varName, varValue) 4 | { 5 | editorGameVars[varName] = varValue; 6 | window[varName] = varValue; 7 | }; 8 | 9 | var deleteGameVar = function(varName) 10 | { 11 | delete editorGameVars[varName]; 12 | delete window[varName]; 13 | }; -------------------------------------------------------------------------------- /js/audio-manager.js: -------------------------------------------------------------------------------- 1 | var editorMapIdAudio = {}; 2 | var editorAudioCount = 0; 3 | 4 | var createNewAudioContent = function(id) 5 | { 6 | var newAudioContent = { id : id, audioData : null }; 7 | editorMapIdAudio[id] = newAudioContent; 8 | }; 9 | 10 | var deleteAudioContent = function(id) 11 | { 12 | delete editorMapIdAudio[id]; 13 | }; -------------------------------------------------------------------------------- /js/character-manager.js: -------------------------------------------------------------------------------- 1 | var editorCharactersList = []; 2 | var editorMapIdCharacter = {}; 3 | var editorCurrentCharacter = null; 4 | var editorPlayerCharacter = null; 5 | 6 | var createNewEditorCharacter = function(id) 7 | { 8 | var newCharacter = new EditorItem(id, 'character'); 9 | editorCharactersList.push(newCharacter); 10 | editorMapIdCharacter[newCharacter.id] = newCharacter; 11 | }; 12 | 13 | var deleteEditorCharacter = function(id) 14 | { 15 | var character = editorMapIdCharacter[id]; 16 | editorCharactersList.splice(editorCharactersList.indexOf(character), 1); 17 | delete editorMapIdCharacter[id]; 18 | }; -------------------------------------------------------------------------------- /js/inventory-manager.js: -------------------------------------------------------------------------------- 1 | var InventoryItem = function(id) 2 | { 3 | this.id = id; 4 | this.anim = null; 5 | this.description = ''; 6 | }; 7 | 8 | var editorInvItemList = []; 9 | var editorMapIdInvItem = {}; 10 | var editorInvItemCount = 0; 11 | 12 | var createNewInvItem = function(id) 13 | { 14 | var newInvItem = new InventoryItem(id); 15 | editorInvItemList.push(newInvItem); 16 | editorMapIdInvItem[newInvItem.id] = newInvItem; 17 | }; 18 | 19 | var deleteInvItem = function(id) 20 | { 21 | var invItem = editorMapIdInvItem[id]; 22 | editorInvItemList.splice(editorInvItemList.indexOf(invItem), 1); 23 | delete editorMapIdInvItem[id]; 24 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | GAUSS 2 | ============= 3 | GAUSS stands for "Graphic Adventure Unified Scripting System" and was originally born as thesis for my master degree in computer science: 4 | in short, it's an engine to create graphic adventures in the style of the old LucasArts classics. 5 | GAUSS allows you to import resources, create your own scripts written in JavaScript to define the responses to the player's action and to test the game. 6 | Once you're OK with the result, the editor can export the game as an HTML page, ready to be uploaded and shared. 7 | In order to be playable once exported, the game package must at least include the generated HTML file, the js folder, the fonts folder and the icons folder. 8 | -------------------------------------------------------------------------------- /inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/wysiwyg-color.css: -------------------------------------------------------------------------------- 1 | .wysiwyg-color-black { 2 | color: black; 3 | } 4 | 5 | .wysiwyg-color-silver { 6 | color: silver; 7 | } 8 | 9 | .wysiwyg-color-gray { 10 | color: gray; 11 | } 12 | 13 | .wysiwyg-color-white { 14 | color: white; 15 | } 16 | 17 | .wysiwyg-color-maroon { 18 | color: maroon; 19 | } 20 | 21 | .wysiwyg-color-red { 22 | color: red; 23 | } 24 | 25 | .wysiwyg-color-purple { 26 | color: purple; 27 | } 28 | 29 | .wysiwyg-color-fuchsia { 30 | color: fuchsia; 31 | } 32 | 33 | .wysiwyg-color-green { 34 | color: green; 35 | } 36 | 37 | .wysiwyg-color-lime { 38 | color: lime; 39 | } 40 | 41 | .wysiwyg-color-olive { 42 | color: olive; 43 | } 44 | 45 | .wysiwyg-color-yellow { 46 | color: yellow; 47 | } 48 | 49 | .wysiwyg-color-navy { 50 | color: navy; 51 | } 52 | 53 | .wysiwyg-color-blue { 54 | color: blue; 55 | } 56 | 57 | .wysiwyg-color-teal { 58 | color: teal; 59 | } 60 | 61 | .wysiwyg-color-aqua { 62 | color: aqua; 63 | } 64 | 65 | .wysiwyg-color-orange { 66 | color: orange; 67 | } -------------------------------------------------------------------------------- /js/dialog-manager.js: -------------------------------------------------------------------------------- 1 | var editorMapIdDialog = {}; 2 | var editorDialogsCount = 0; 3 | 4 | var Dialog = function(id) 5 | { 6 | this.id = id; 7 | this.currentSubDialog = 'root'; 8 | this.subdialogs = { 'root' : [] }; 9 | this.hidden = false; 10 | }; 11 | 12 | //TODO: fix dialog lines ordering 13 | Dialog.prototype.addDialogChoice = function(subDialogId, choice, pos) 14 | { 15 | if(subDialogId.length == 0) 16 | subDialogId = 'root'; 17 | else if(this.subdialogs[subDialogId] == undefined) 18 | this.subdialogs[subDialogId] = []; 19 | if(!pos) 20 | { 21 | this.subdialogs[subDialogId].push(choice); 22 | return; 23 | } 24 | this.subdialogs[subDialogId].splice(pos, 0, choice); 25 | }; 26 | 27 | Dialog.prototype.removeDialogChoice = function(subDialogId, pos) 28 | { 29 | if(this.subdialogs[subDialogId] && this.subdialogs[subDialogId].length) 30 | this.subdialogs[subDialogId].splice(pos, 1); 31 | }; 32 | 33 | Dialog.prototype.copy = function(d) 34 | { 35 | this.id = d.id; 36 | this.currentSubDialog = d.currentSubDialog; 37 | this.subdialogs = d.subdialogs; 38 | }; 39 | 40 | var DialogChoice = function(text, script, quit, open, hidden, showOnce, hideOnce) 41 | { 42 | this.sentence = text; 43 | this.script = script; 44 | this.quit = quit; 45 | this.open = open; 46 | this.hidden = hidden; 47 | this.showOnce = showOnce; 48 | this.chooseOnce = hideOnce; 49 | }; 50 | 51 | var deleteDialog = function(id) 52 | { 53 | delete editorMapIdDialog[id]; 54 | }; 55 | 56 | -------------------------------------------------------------------------------- /css/jquery.inputfile.css: -------------------------------------------------------------------------------- 1 | .inputfile { 2 | display: inline-block; 3 | margin-bottom: 2px; 4 | } 5 | 6 | .inputfile .upload-button { 7 | display: inline-block; 8 | position: relative; 9 | } 10 | 11 | .inputfile .upload-button input[type="file"] { 12 | left: 0; 13 | height: 100%; 14 | opacity: 0; 15 | position: absolute; 16 | top: 0; 17 | width: 100%; 18 | } 19 | 20 | .inputfile .previous-file { 21 | display: inline-block; 22 | } 23 | 24 | .inputfile .previous-file .upload-button-link { 25 | margin-right: 4px; 26 | display: inline-block; 27 | direction: rtl; 28 | max-width: 360px; 29 | overflow: visible; 30 | height: 24px; 31 | text-align: right; 32 | white-space: nowrap; 33 | } 34 | 35 | .inputfile .previous-file .upload-button-link[href="#"] { 36 | cursor: default; 37 | text-decoration: none; 38 | } 39 | 40 | .inputfile .previous-file .upload-button-remove { 41 | margin-right: 15px; 42 | } 43 | 44 | 45 | .inputfile .previous-file .upload-button-remove .remove-icon { 46 | display: inline-block; 47 | } 48 | 49 | .inputfile .previous-file .upload-button-remove .restore-icon { 50 | display: none; 51 | } 52 | 53 | .inputfile .previous-file.deleted .upload-button-link { 54 | color: #999; 55 | text-decoration: line-through; 56 | } 57 | 58 | .inputfile .previous-file.deleted .upload-button-remove .remove-icon { 59 | display: none; 60 | } 61 | 62 | .inputfile .previous-file.deleted .upload-button-remove .restore-icon { 63 | display: inline-block; 64 | } -------------------------------------------------------------------------------- /inputs-ext/typeaheadjs/lib/typeahead.js-bootstrap.css: -------------------------------------------------------------------------------- 1 | .twitter-typeahead .tt-query, 2 | .twitter-typeahead .tt-hint { 3 | margin-bottom: 0; 4 | } 5 | 6 | .tt-dropdown-menu { 7 | min-width: 160px; 8 | margin-top: 2px; 9 | padding: 5px 0; 10 | background-color: #fff; 11 | border: 1px solid #ccc; 12 | border: 1px solid rgba(0,0,0,.2); 13 | *border-right-width: 2px; 14 | *border-bottom-width: 2px; 15 | -webkit-border-radius: 6px; 16 | -moz-border-radius: 6px; 17 | border-radius: 6px; 18 | -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); 19 | -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); 20 | box-shadow: 0 5px 10px rgba(0,0,0,.2); 21 | -webkit-background-clip: padding-box; 22 | -moz-background-clip: padding; 23 | background-clip: padding-box; 24 | } 25 | 26 | .tt-suggestion { 27 | display: block; 28 | padding: 3px 20px; 29 | } 30 | 31 | .tt-suggestion.tt-is-under-cursor { 32 | color: #fff; 33 | background-color: #0081c2; 34 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 35 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 36 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 37 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 38 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 39 | background-repeat: repeat-x; 40 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0) 41 | } 42 | 43 | .tt-suggestion.tt-is-under-cursor a { 44 | color: #fff; 45 | } 46 | 47 | .tt-suggestion p { 48 | margin: 0; 49 | } 50 | -------------------------------------------------------------------------------- /js/anims-manager.js: -------------------------------------------------------------------------------- 1 | var Anim = function(id) 2 | { 3 | this.id = id; 4 | this.frames = new Array(); 5 | this.loop = true; 6 | this.start_idx = 0; 7 | this.animInt = null; 8 | this.current_frame = this.start_idx; 9 | this.frame_rate = 150; 10 | this.addFrame = addAnimFrame; 11 | this.removeFrame = removeAnimFrame; 12 | this.incrCurrIdx = incrCurrFrame; 13 | this.play = startRollingFrames; 14 | this.stop = stopRollingFrames; 15 | }; 16 | 17 | var addAnimFrame = function(idx, image) 18 | { 19 | this.frames[idx] = image; 20 | }; 21 | 22 | var removeAnimFrame = function(idx) 23 | { 24 | this.frames.splice(idx, 1); 25 | }; 26 | 27 | var incrCurrFrame = function() 28 | { 29 | this.current_frame = (this.current_frame + 1) % this.frames.length; 30 | }; 31 | 32 | var createNewAnim = function(id) 33 | { 34 | var newAnim = new Anim(id); 35 | editorAnimsList.push(newAnim); 36 | editorMapIdAnim[id] = newAnim; 37 | }; 38 | 39 | var startRollingFrames = function() 40 | { 41 | if(this.animInt) 42 | return; 43 | var that = this; 44 | this.animInt = setInterval(function() 45 | { 46 | if(that.loop === false && that.current_frame === that.frames.length - 1) 47 | { 48 | clearInterval(that.animInt); 49 | that.animInt = null; 50 | return; 51 | } 52 | that.incrCurrIdx(); 53 | }, that.frame_rate); 54 | }; 55 | 56 | var stopRollingFrames = function() 57 | { 58 | clearInterval(this.animInt); 59 | this.animInt = null; 60 | this.current_frame = this.start_idx; 61 | }; 62 | 63 | var editorAnimsList = []; 64 | var editorMapIdAnim = {}; 65 | var editorAnimsCount = 0; 66 | 67 | var deleteEditorAnim = function(id) 68 | { 69 | var anim = editorMapIdAnim[id]; 70 | editorAnimsList.splice(editorCharactersList.indexOf(anim), 1); 71 | delete editorMapIdAnim[id]; 72 | }; 73 | 74 | 75 | -------------------------------------------------------------------------------- /css/context.bootstrap.css: -------------------------------------------------------------------------------- 1 | /** 2 | * ContextJS Styles 3 | * For use with Twitters Bootstrap CSS 4 | */ 5 | 6 | .dropdown-context .nav-header{ 7 | cursor:default; 8 | } 9 | .dropdown-context:before, .dropdown-context-up:before { 10 | position: absolute; 11 | top: -7px; 12 | left: 9px; 13 | display: inline-block; 14 | border-right: 7px solid transparent; 15 | border-bottom: 7px solid #ccc; 16 | border-left: 7px solid transparent; 17 | border-bottom-color: rgba(0, 0, 0, 0.2); 18 | content: ''; 19 | } 20 | .dropdown-context:after, .dropdown-context-up:after{ 21 | position: absolute; 22 | top: -6px; 23 | left: 10px; 24 | display: inline-block; 25 | border-right: 6px solid transparent; 26 | border-bottom: 6px solid #ffffff; 27 | border-left: 6px solid transparent; 28 | content: ''; 29 | } 30 | .dropdown-context-up:before, .dropdown-context-up:after{ 31 | top:auto; 32 | bottom:-7px; 33 | z-index:9999; 34 | } 35 | .dropdown-context-up:before{ 36 | border-right: 7px solid transparent; 37 | border-top: 7px solid #ccc; 38 | border-bottom:none; 39 | border-left: 7px solid transparent; 40 | } 41 | .dropdown-context-up:after{ 42 | border-right: 6px solid transparent; 43 | border-top: 6px solid #ffffff; 44 | border-left: 6px solid transparent; 45 | border-bottom:none; 46 | } 47 | 48 | .dropdown-context-sub:before, .dropdown-context-sub:after{ 49 | display:none; 50 | } 51 | .dropdown-context .dropdown-submenu:hover .dropdown-menu { 52 | display: none; 53 | } 54 | 55 | .dropdown-context .dropdown-submenu:hover > .dropdown-menu { 56 | display: block; 57 | } 58 | 59 | 60 | .compressed-context a{ 61 | padding-left: 14px; 62 | padding-top: 0; 63 | padding-bottom: 0; 64 | font-size: 13px; 65 | } 66 | .compressed-context .divider{ 67 | margin: 5px 1px; 68 | } 69 | .compressed-context .nav-header{ 70 | padding:1px 13px; 71 | } -------------------------------------------------------------------------------- /css/uploadfile.min.css: -------------------------------------------------------------------------------- 1 | .ajax-file-upload-statusbar{border:1px solid #0ba1b5;margin-top:10px;width:420px;margin-right:10px;margin:5px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;padding:5px 5px 5px 5px}.ajax-file-upload-filename{width:100%;height:auto;margin:0 5px 5px 10px;color:#807579}.ajax-file-upload-progress{margin:0 10px 5px 10px;position:relative;width:250px;border:1px solid #ddd;padding:1px;border-radius:3px;display:inline-block}.ajax-file-upload-bar{background-color:#0ba1b5;width:0;height:20px;border-radius:3px}.ajax-file-upload-percent{position:absolute;display:inline-block;top:3px;left:48%}.ajax-file-upload-red{-moz-box-shadow:inset 0 39px 0 -24px #e67a73;-webkit-box-shadow:inset 0 39px 0 -24px #e67a73;box-shadow:inset 0 39px 0 -24px #e67a73;background-color:#e4685d;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;display:inline-block;color:#fff;font-family:arial;font-size:13px;font-weight:normal;padding:4px 15px;text-decoration:none;text-shadow:0 1px 0 #b23e35;cursor:pointer;vertical-align:top;margin-right:5px}.ajax-file-upload-green{background-color:#77b55a;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;margin:0;padding:0;display:inline-block;color:#fff;font-family:arial;font-size:13px;font-weight:normal;padding:4px 15px;text-decoration:none;cursor:pointer;text-shadow:0 1px 0 #5b8a3c;vertical-align:top;margin-right:5px}.ajax-file-upload{font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:bold;padding:15px 20px;cursor:pointer;line-height:20px;height:25px;margin:0 10px 10px 0;display:inline-block;background:#fff;border:1px solid #e8e8e8;color:#888;text-decoration:none;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-moz-box-shadow:0 2px 0 0 #e8e8e8;-webkit-box-shadow:0 2px 0 0 #e8e8e8;box-shadow:0 2px 0 0 #e8e8e8;padding:6px 10px 4px 10px;color:#fff;background:#2f8ab9;border:0;-moz-box-shadow:0 2px 0 0 #13648d;-webkit-box-shadow:0 2px 0 0 #13648d;box-shadow:0 2px 0 0 #13648d;vertical-align:middle}.ajax-file-upload:hover{background:#3396c9;-moz-box-shadow:0 2px 0 0 #15719f;-webkit-box-shadow:0 2px 0 0 #15719f;box-shadow:0 2px 0 0 #15719f}.ajax-upload-dragdrop{border:2px dotted #a5a5c7;width:420px;color:#dadce3;text-align:left;vertical-align:middle;padding:10px 10px 0 10px} -------------------------------------------------------------------------------- /js/action-manager.js: -------------------------------------------------------------------------------- 1 | var Action = function(id) 2 | { 3 | this.id = id; 4 | this.description = ''; 5 | }; 6 | 7 | Action.prototype.setDescription = function(desc) 8 | { 9 | this.description = desc; 10 | }; 11 | 12 | var editorActionsList = new Array(); 13 | var editorMapIdAction = {}; 14 | var editorActionsCount = 0; 15 | 16 | var createNewEditorAction = function(id, desc) 17 | { 18 | var newAction = new Action(id); 19 | if(desc) 20 | newAction.setDescription(desc); 21 | editorActionsList.push(newAction); 22 | editorMapIdAction[newAction.id] = newAction; 23 | }; 24 | 25 | var WALK_TO_ID = 'Walk_to'; 26 | var EYES_ID = 'Eyes'; 27 | var HAND_ID = 'Hand'; 28 | var MOUTH_ID = 'Mouth'; 29 | var COMBINE_ID = 'Combine'; 30 | 31 | var DEFAULT_WALK_TO_SENTENCE = 'Walk to'; 32 | var DEFAULT_EYES_SENTENCE = 'Look at'; 33 | var DEFAULT_HAND_SENTENCE = 'Pick up'; 34 | var DEFAULT_MOUTH_SENTENCE = 'Talk to'; 35 | var DEFAULT_COMBINE_SENTENCE = 'Combine'; 36 | 37 | createNewEditorAction(WALK_TO_ID, DEFAULT_WALK_TO_SENTENCE); 38 | createNewEditorAction(EYES_ID, DEFAULT_EYES_SENTENCE); 39 | createNewEditorAction(HAND_ID, DEFAULT_HAND_SENTENCE); 40 | createNewEditorAction(MOUTH_ID, DEFAULT_MOUTH_SENTENCE); 41 | createNewEditorAction(COMBINE_ID, DEFAULT_COMBINE_SENTENCE); 42 | 43 | var defaultSentences = {}; 44 | defaultSentences[HAND_ID] = [ 'I can\'t pick that up.', 'I don\'t need it.', 'That doesn\'t seem to work.', 'I can\'t use that.', 'Nah.']; 45 | defaultSentences[EYES_ID] = [ 'I don\'t see anything special about it.', 'Cool.' ]; 46 | defaultSentences[MOUTH_ID] = [ 'Not a chatterbox.', 'I don\'t think it\'s going to answer.' ]; 47 | defaultSentences[COMBINE_ID] = [ 'That doesn\'t seem to work.' ]; 48 | 49 | var defaultReactions = {}; 50 | defaultReactions[HAND_ID] = 'var set = defaultSentences["' + HAND_ID + '"]; var idx = Math.floor(Math.random() * set.length); egoSayLine(set[idx])'; 51 | defaultReactions[EYES_ID] = 'var set = defaultSentences["' + EYES_ID + '"]; var idx = Math.floor(Math.random() * set.length); egoSayLine(set[idx])'; 52 | defaultReactions[MOUTH_ID] = 'var set = defaultSentences["' + MOUTH_ID + '"]; var idx = Math.floor(Math.random() * set.length); egoSayLine(set[idx])'; 53 | defaultReactions[COMBINE_ID] = 'var set = defaultSentences["' + COMBINE_ID +'"]; var idx = Math.floor(Math.random() * set.length); egoSayLine(set[idx])'; 54 | -------------------------------------------------------------------------------- /inputs-ext/typeaheadjs/typeaheadjs.js: -------------------------------------------------------------------------------- 1 | /** 2 | Typeahead.js input, based on [Twitter Typeahead](http://twitter.github.io/typeahead.js). 3 | It is mainly replacement of typeahead in Bootstrap 3. 4 | 5 | 6 | @class typeaheadjs 7 | @extends text 8 | @since 1.5.0 9 | @final 10 | @example 11 | 12 | 30 | **/ 31 | (function ($) { 32 | "use strict"; 33 | 34 | var Constructor = function (options) { 35 | this.init('typeaheadjs', options, Constructor.defaults); 36 | }; 37 | 38 | $.fn.editableutils.inherit(Constructor, $.fn.editabletypes.text); 39 | 40 | $.extend(Constructor.prototype, { 41 | render: function() { 42 | this.renderClear(); 43 | this.setClass(); 44 | this.setAttr('placeholder'); 45 | this.$input.typeahead(this.options.typeahead); 46 | 47 | // copy `input-sm | input-lg` classes to placeholder input 48 | if($.fn.editableform.engine === 'bs3') { 49 | if(this.$input.hasClass('input-sm')) { 50 | this.$input.siblings('input.tt-hint').addClass('input-sm'); 51 | } 52 | if(this.$input.hasClass('input-lg')) { 53 | this.$input.siblings('input.tt-hint').addClass('input-lg'); 54 | } 55 | } 56 | } 57 | }); 58 | 59 | Constructor.defaults = $.extend({}, $.fn.editabletypes.list.defaults, { 60 | /** 61 | @property tpl 62 | @default 63 | **/ 64 | tpl:'', 65 | /** 66 | Configuration of typeahead itself. 67 | [Full list of options](https://github.com/twitter/typeahead.js#dataset). 68 | 69 | @property typeahead 70 | @type object 71 | @default null 72 | **/ 73 | typeahead: null, 74 | /** 75 | Whether to show `clear` button 76 | 77 | @property clear 78 | @type boolean 79 | @default true 80 | **/ 81 | clear: true 82 | }); 83 | 84 | $.fn.editabletypes.typeaheadjs = Constructor; 85 | 86 | }(window.jQuery)); -------------------------------------------------------------------------------- /inputs-ext/wysihtml5/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.css: -------------------------------------------------------------------------------- 1 | ul.wysihtml5-toolbar { 2 | margin: 0; 3 | padding: 0; 4 | display: block; 5 | } 6 | 7 | ul.wysihtml5-toolbar::after { 8 | clear: both; 9 | display: table; 10 | content: ""; 11 | } 12 | 13 | ul.wysihtml5-toolbar > li { 14 | float: left; 15 | display: list-item; 16 | list-style: none; 17 | margin: 0 5px 10px 0; 18 | } 19 | 20 | ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] { 21 | font-weight: bold; 22 | } 23 | 24 | ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] { 25 | font-style: italic; 26 | } 27 | 28 | ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] { 29 | text-decoration: underline; 30 | } 31 | 32 | ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { 33 | background-image: none; 34 | -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 35 | -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 36 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 37 | background-color: #E6E6E6; 38 | background-color: #D9D9D9; 39 | outline: 0; 40 | } 41 | 42 | ul.wysihtml5-commands-disabled .dropdown-menu { 43 | display: none !important; 44 | } 45 | 46 | ul.wysihtml5-toolbar div.wysihtml5-colors { 47 | display:block; 48 | width: 50px; 49 | height: 20px; 50 | margin-top: 2px; 51 | margin-left: 5px; 52 | position: absolute; 53 | pointer-events: none; 54 | } 55 | 56 | ul.wysihtml5-toolbar a.wysihtml5-colors-title { 57 | padding-left: 70px; 58 | } 59 | 60 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] { 61 | background: black !important; 62 | } 63 | 64 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] { 65 | background: silver !important; 66 | } 67 | 68 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] { 69 | background: gray !important; 70 | } 71 | 72 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] { 73 | background: maroon !important; 74 | } 75 | 76 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] { 77 | background: red !important; 78 | } 79 | 80 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] { 81 | background: purple !important; 82 | } 83 | 84 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] { 85 | background: green !important; 86 | } 87 | 88 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] { 89 | background: olive !important; 90 | } 91 | 92 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] { 93 | background: navy !important; 94 | } 95 | 96 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] { 97 | background: blue !important; 98 | } 99 | 100 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] { 101 | background: orange !important; 102 | } 103 | -------------------------------------------------------------------------------- /css/select2-bootstrap.css: -------------------------------------------------------------------------------- 1 | .form-control .select2-choice { 2 | border: 0; 3 | border-radius: 2px; 4 | } 5 | 6 | .form-control .select2-choice .select2-arrow { 7 | border-radius: 0 2px 2px 0; 8 | } 9 | 10 | .form-control.select2-container { 11 | height: auto !important; 12 | padding: 0; 13 | } 14 | 15 | .form-control.select2-container.select2-dropdown-open { 16 | border-color: #5897FB; 17 | border-radius: 3px 3px 0 0; 18 | } 19 | 20 | .form-control .select2-container.select2-dropdown-open .select2-choices { 21 | border-radius: 3px 3px 0 0; 22 | } 23 | 24 | .form-control.select2-container .select2-choices { 25 | border: 0 !important; 26 | border-radius: 3px; 27 | } 28 | 29 | .control-group.warning .select2-container .select2-choice, 30 | .control-group.warning .select2-container .select2-choices, 31 | .control-group.warning .select2-container-active .select2-choice, 32 | .control-group.warning .select2-container-active .select2-choices, 33 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, 34 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, 35 | .control-group.warning .select2-container-multi.select2-container-active .select2-choices { 36 | border: 1px solid #C09853 !important; 37 | } 38 | 39 | .control-group.warning .select2-container .select2-choice div { 40 | border-left: 1px solid #C09853 !important; 41 | background: #FCF8E3 !important; 42 | } 43 | 44 | .control-group.error .select2-container .select2-choice, 45 | .control-group.error .select2-container .select2-choices, 46 | .control-group.error .select2-container-active .select2-choice, 47 | .control-group.error .select2-container-active .select2-choices, 48 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, 49 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, 50 | .control-group.error .select2-container-multi.select2-container-active .select2-choices { 51 | border: 1px solid #B94A48 !important; 52 | } 53 | 54 | .control-group.error .select2-container .select2-choice div { 55 | border-left: 1px solid #B94A48 !important; 56 | background: #F2DEDE !important; 57 | } 58 | 59 | .control-group.info .select2-container .select2-choice, 60 | .control-group.info .select2-container .select2-choices, 61 | .control-group.info .select2-container-active .select2-choice, 62 | .control-group.info .select2-container-active .select2-choices, 63 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, 64 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, 65 | .control-group.info .select2-container-multi.select2-container-active .select2-choices { 66 | border: 1px solid #3A87AD !important; 67 | } 68 | 69 | .control-group.info .select2-container .select2-choice div { 70 | border-left: 1px solid #3A87AD !important; 71 | background: #D9EDF7 !important; 72 | } 73 | 74 | .control-group.success .select2-container .select2-choice, 75 | .control-group.success .select2-container .select2-choices, 76 | .control-group.success .select2-container-active .select2-choice, 77 | .control-group.success .select2-container-active .select2-choices, 78 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, 79 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, 80 | .control-group.success .select2-container-multi.select2-container-active .select2-choices { 81 | border: 1px solid #468847 !important; 82 | } 83 | 84 | .control-group.success .select2-container .select2-choice div { 85 | border-left: 1px solid #468847 !important; 86 | background: #DFF0D8 !important; 87 | } 88 | -------------------------------------------------------------------------------- /inputs-ext/wysihtml5/wysihtml5.js: -------------------------------------------------------------------------------- 1 | /** 2 | Bootstrap wysihtml5 editor. Based on [bootstrap-wysihtml5](https://github.com/jhollingworth/bootstrap-wysihtml5). 3 | You should include **manually** distributives of `wysihtml5` and `bootstrap-wysihtml5`: 4 | 5 | 6 | 7 | 8 | 9 | And also include `wysihtml5.js` from `inputs-ext` directory of x-editable: 10 | 11 | 12 | 13 | **Note:** It's better to use fresh bootstrap-wysihtml5 from it's [master branch](https://github.com/jhollingworth/bootstrap-wysihtml5/tree/master/src) as there is update for correct image insertion. 14 | 15 | @class wysihtml5 16 | @extends abstractinput 17 | @final 18 | @since 1.4.0 19 | @example 20 |
awesome
comment!