├── core ├── snippets │ └── typeahead.php ├── assets │ ├── css │ │ ├── jquery-sortable.min.css │ │ ├── tablesorter.min.css │ │ ├── extendBootstrapGrid.min.css │ │ ├── bootstrap-fileupload.min.css │ │ ├── nouislider.min.css │ │ ├── bootstrap-select.min.css │ │ ├── bootstrap-switch.min.css │ │ └── add2home.min.css │ └── js │ │ ├── jquery.hotkeys.min.js │ │ ├── jquery-sortable.min.js │ │ ├── jquery.maskedinput.min.js │ │ ├── bootstrap-file-input.min.js │ │ ├── pagetransitions.min.js │ │ ├── fastclick.min.js │ │ └── bootstrap-switch.min.js ├── updateSessionVar.php ├── index.php └── dataParse.php ├── assets ├── data │ ├── dataFromSpreadsheets.yml │ ├── fakeGoogle.yml │ ├── linkedData.yml │ ├── users.yml │ ├── data.yml │ ├── translations.yml │ └── config.yml ├── db │ └── default ├── img │ ├── google.png │ ├── camdummy.jpg │ ├── gallery1.jpg │ ├── gallery2.jpg │ ├── gallery3.jpg │ ├── googleMini.png │ ├── persona_f_1.jpg │ ├── persona_f_2.jpg │ ├── persona_f_3.jpg │ ├── persona_f_4.jpg │ ├── persona_f_5.jpg │ ├── persona_f_6.jpg │ ├── persona_f_7.jpg │ ├── persona_m_8.jpg │ ├── persona_m_9.jpg │ ├── persona_m_10.jpg │ ├── persona_m_11.jpg │ ├── persona_m_12.jpg │ ├── persona_m_13.jpg │ ├── persona_m_14.jpg │ ├── google_nav_logo195.png │ ├── sort-asc.svg │ ├── sort.svg │ ├── sort-desc.svg │ └── placeholderImage.svg ├── ico │ ├── favicon.ico │ ├── android-196.png │ ├── apple-touch-icon.png │ ├── apple-touch-icon-57x57.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-144x144.png │ └── apple-touch-icon-152x152.png ├── webfonts │ ├── ionic │ │ ├── ionicons.eot │ │ ├── ionicons.ttf │ │ └── ionicons.woff │ ├── fontawesome │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ └── glyphicons │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff ├── csv │ └── translations.csv ├── js │ └── main.js └── css │ └── main.css ├── .gitignore ├── snippets ├── version.php ├── footer.php ├── forceLogin.php ├── prototypeauth.php ├── typeahead.php ├── optionsDropdown.php ├── loginForm.php ├── iosTopbar.php ├── meta_javascripts.php ├── iosTabbar.php ├── meta_headTag.php ├── makeTableFromData.php └── navBarTop.php ├── functions_controller.php ├── addons ├── sublime │ ├── br.sublime-snippet │ ├── nbsp.sublime-snippet │ ├── php.sublime-snippet │ ├── translate.sublime-snippet │ ├── addclasshide.sublime-snippet │ ├── post.sublime-snippet │ ├── removeclasshide.sublime-snippet │ ├── phpEcho.sublime-snippet │ ├── void.sublime-snippet │ ├── icon.sublime-snippet │ ├── this.sublime-snippet │ ├── consoleLog.sublime-snippet │ ├── hideif.sublime-snippet │ ├── jquerySelector.sublime-snippet │ ├── showif.sublime-snippet │ ├── hr.sublime-snippet │ ├── include.sublime-snippet │ ├── micropadding.sublime-snippet │ ├── trans.sublime-snippet │ ├── simpleList.sublime-snippet │ ├── includeif.sublime-snippet │ ├── md3.sublime-snippet │ ├── md6.sublime-snippet │ ├── thisdata.sublime-snippet │ ├── vardump.sublime-snippet │ ├── classAddHide.sublime-snippet │ ├── classRemoveHide.sublime-snippet │ ├── classToggleHide.sublime-snippet │ ├── image.sublime-snippet │ ├── jqEach.sublime-snippet │ ├── testsnippet.sublime-snippet │ ├── btn.sublime-snippet │ ├── md48.sublime-snippet │ ├── md84.sublime-snippet │ ├── if.sublime-snippet │ ├── md4.sublime-snippet │ ├── box.sublime-snippet │ ├── foreach.sublime-snippet │ ├── inputfield.sublime-snippet │ ├── jQclick.sublime-snippet │ ├── md363.sublime-snippet │ ├── flex.sublime-snippet │ ├── while.sublime-snippet │ ├── flexbox.sublime-snippet │ ├── jQueryOnClick.sublime-snippet │ ├── switch.sublime-snippet │ ├── getajax.sublime-snippet │ ├── row.sublime-snippet │ ├── issetget.sublime-snippet │ ├── list.sublime-snippet │ ├── filtertable.sublime-snippet │ ├── panel.sublime-snippet │ ├── datepicker.sublime-snippet │ ├── checkbox.sublime-snippet │ ├── typeahead.sublime-snippet │ ├── collapse.sublime-snippet │ ├── inputDate.sublime-snippet │ ├── select.sublime-snippet │ ├── table.sublime-snippet │ ├── inputgroup.sublime-snippet │ ├── formText.sublime-snippet │ ├── btnGroup.sublime-snippet │ ├── formCheckbox.sublime-snippet │ ├── media.sublime-snippet │ ├── toggleSingleBtn.sublime-snippet │ ├── btnGrouptoggleSingle.sublime-snippet │ ├── splitButton.sublime-snippet │ ├── accordeonGroup.sublime-snippet │ ├── fileupload.sublime-snippet │ ├── card.sublime-snippet │ ├── tabs.sublime-snippet │ ├── formRadio.sublime-snippet │ ├── modal.sublime-snippet │ ├── accordeon.sublime-snippet │ └── carousel.sublime-snippet └── setup.sh ├── changelog.txt ├── .htaccess ├── README.md ├── fileNotFound.php ├── index.php ├── template_mobile.php └── google.php /core/snippets/typeahead.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/data/dataFromSpreadsheets.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/db/default: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/db/default -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | 4 | 5 | assets/data/fakeGooglegitignored.yml 6 | 7 | *.sketch 8 | -------------------------------------------------------------------------------- /assets/img/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/google.png -------------------------------------------------------------------------------- /assets/ico/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/ico/favicon.ico -------------------------------------------------------------------------------- /assets/img/camdummy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/camdummy.jpg -------------------------------------------------------------------------------- /assets/img/gallery1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/gallery1.jpg -------------------------------------------------------------------------------- /assets/img/gallery2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/gallery2.jpg -------------------------------------------------------------------------------- /assets/img/gallery3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/gallery3.jpg -------------------------------------------------------------------------------- /assets/ico/android-196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/ico/android-196.png -------------------------------------------------------------------------------- /assets/img/googleMini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/googleMini.png -------------------------------------------------------------------------------- /assets/img/persona_f_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_1.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_2.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_3.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_4.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_5.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_6.jpg -------------------------------------------------------------------------------- /assets/img/persona_f_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_f_7.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_8.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_9.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_10.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_11.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_12.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_13.jpg -------------------------------------------------------------------------------- /assets/img/persona_m_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/persona_m_14.jpg -------------------------------------------------------------------------------- /assets/ico/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/ico/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/img/google_nav_logo195.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/img/google_nav_logo195.png -------------------------------------------------------------------------------- /assets/webfonts/ionic/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/webfonts/ionic/ionicons.eot -------------------------------------------------------------------------------- /assets/webfonts/ionic/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/webfonts/ionic/ionicons.ttf -------------------------------------------------------------------------------- /assets/webfonts/ionic/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessamess/Protostrap/HEAD/assets/webfonts/ionic/ionicons.woff -------------------------------------------------------------------------------- /snippets/version.php: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | br 5 | 6 | Break - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/nbsp.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nb 5 | 6 | nbsp - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/php.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | php 5 | 6 | PHP Tag - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/translate.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | trans 5 | 6 | Translation Protostrap PS 7 | 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/addclasshide.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ac 5 | 6 | jQuery Add-class Protostrap PS 7 | 8 | -------------------------------------------------------------------------------- /addons/sublime/post.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | post 5 | 6 | Post - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/removeclasshide.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | rc 5 | 6 | jQuery Remove-class Protostrap PS 7 | -------------------------------------------------------------------------------- /addons/sublime/phpEcho.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | echo 5 | 6 | PHP Echo Tag - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/void.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | void 5 | 6 | Javascript Void - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/icon.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | icon 5 | 6 | Icon - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/this.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | this 5 | 6 | jQuery $(this) statement - Protostrap 7 | jQuery 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/consoleLog.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | console 5 | 6 | Console Log - Protostrap 7 | jQuery 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/hideif.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | hideif 5 | 6 | Hide If - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/jquerySelector.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $$ 5 | 6 | jQuery Selector - Protostrap 7 | jQuery 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/showif.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | showif 5 | 6 | Show If - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/hr.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | hrp 5 | 6 | Horizontal Ruler with plain class - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/include.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | include 5 | 6 | Include - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/micropadding.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | mp 5 | 6 | Micropadding of 8px - Protostrap 7 | HTML 8 | -------------------------------------------------------------------------------- /addons/sublime/trans.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | __ 5 | 6 | Get translation for a key - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/simpleList.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | li*${1:5}]]> 3 | 4 | sl 5 | 6 | Make Emmet markup for a simple List - Protostrap 7 | HTML 8 | -------------------------------------------------------------------------------- /addons/sublime/includeif.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | incif 5 | 6 | Include If - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/md3.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-3*4]]> 3 | 4 | md3 5 | 6 | grid Row with 4 md-3 slots - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/md6.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-6*2]]> 3 | 4 | md6 5 | 6 | grid Row with 2 md-6 slots - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/thisdata.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | data 5 | 6 | jQuery - construct this data statement - Protostrap 7 | jQuery 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/vardump.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | }]]> 3 | 4 | vd 5 | 6 | PHP vardump - Protostrap 7 | PHP 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/classAddHide.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ac 5 | 6 | jQuery Add a Class, use "hide" as default - Protostrap 7 | jQuery 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/classRemoveHide.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | rc 5 | 6 | jQuery Remove Class, use "hide" as default - Protostrap 7 | jQuery 8 | -------------------------------------------------------------------------------- /addons/sublime/classToggleHide.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tc 5 | 6 | jQuery Toggle Class, use "hide" as default - Protostrap 7 | jQuery 8 | -------------------------------------------------------------------------------- /addons/sublime/image.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | image 5 | 6 | Image - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/jqEach.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | each 7 | 8 | jQuery Each - Protostrap 9 | jQuery 10 | 11 | -------------------------------------------------------------------------------- /addons/sublime/testsnippet.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | testsnippet 5 | 6 | Testsnippet - Protostrap 7 | test 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/btn.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ${2:Label}${3:$TM_SELECTED_TEXT}]]> 3 | 4 | psbtn 5 | 6 | Button - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/md48.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-4+div.col-md-8]]> 3 | 4 | md48 5 | 6 | grid Row with an md-4 and an md-8 slot - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/md84.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-8+div.col-md-4]]> 3 | 4 | md84 5 | 6 | grid Row with an md-8 and an md-4 slot - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/if.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ]]> 7 | 8 | psif 9 | 10 | If Statement Protostrap PS 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/md4.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-${1:4}+div.col-md-${2:4}+div.col-md-${3:4}]]> 3 | 4 | md4 5 | 6 | grid Row with 3 md-4 slots - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/box.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | } ]]> 3 | 4 | alert 5 | 6 | Alert - Protostrap 7 | PHP 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/foreach.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | \$${3:val}) { ?> 3 | 4 | ]]> 5 | 6 | foreach 7 | 8 | Foreach - Protostrap 9 | PHP 10 | 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/inputfield.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | psinput 5 | 6 | Input Field - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/jQclick.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | click 9 | 10 | jQuery click event handler - Protostrap 11 | jQuery 12 | -------------------------------------------------------------------------------- /addons/sublime/md363.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.col-md-3+div.col-md-6+div.col-md-3]]> 3 | 4 | md363 5 | 6 | grid Row with an md-3, md-6 and an md-3 slot - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/flex.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | div.fix${1:80}+div.flex-${2:1}+${3:div.fix${1}}]]> 3 | 4 | flex 5 | 6 | Flex Row with a fixed, a flex and a fixed slot - Protostrap 7 | HTML 8 | 9 | 10 | -------------------------------------------------------------------------------- /addons/sublime/while.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ]]> 8 | 9 | while 10 | 11 | While loop with increment - Protostrap 12 | PHP 13 | 14 | -------------------------------------------------------------------------------- /addons/sublime/flexbox.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | ]]>
6 | 7 | flexbox 8 | 9 | Flexbox - Protostrap 10 | HTML 11 |
12 | -------------------------------------------------------------------------------- /addons/sublime/jQueryOnClick.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | onclick 9 | 10 | jQuery onclick event handler - Protostrap 11 | jQuery 12 | -------------------------------------------------------------------------------- /addons/sublime/switch.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ]]> 3 | 4 | switchbtn 5 | 6 | Switch Button - Protostrap 7 | HTML 8 | 9 | -------------------------------------------------------------------------------- /addons/sublime/getajax.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | ajax 8 | 9 | Ajax Get request- Protostrap 10 | JavaScript 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/row.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 |
7 | 8 |
9 | ]]>
10 | 11 | row 12 | 13 | Row - Protostrap 14 | HTML 15 |
-------------------------------------------------------------------------------- /addons/sublime/issetget.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | issetget 8 | 9 | Assign a specific GET variable if it exists - Protostrap 10 | PHP 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/list.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
  • 4 |
  • 5 |
  • 6 | ]]>
    7 | 8 | list 9 | 10 | List-Group - Protostrap 11 | HTML 12 |
    13 | -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | 2 | # v3.1 3 | - added Bootstrap 4 style cards with responsive flexbox grid support 4 | - added nouiSlider 5 | - added ionicons 6 | - updated Bootstrap, 3rd party plugins and Font Awesome to the latest versions 7 | - added versioning to force a refresh of the prototype for distributed tests 8 | - New, cookie based language switch 9 | - added an htaccess free password protection for the prototype itself 10 | - added a stepper to show the status of a process. 11 | - move to Twitter typeahead 12 | -------------------------------------------------------------------------------- /addons/sublime/filtertable.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | ]]> 7 | 8 | filtertable 9 | 10 | Filtertable - Protostrap 11 | HTML 12 | 13 | -------------------------------------------------------------------------------- /addons/sublime/panel.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |

    ${1:title}

    5 |
    6 |
    7 | ${2:content} 8 |
    9 | ]]>
    10 | 11 | panel 12 | 13 | Panel - Protostrap 14 | HTML 15 |
    16 | -------------------------------------------------------------------------------- /addons/sublime/datepicker.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ]]> 6 | 7 | datepicker 8 | 9 | Datepicker - Protostrap 10 | HTML 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/checkbox.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ${2:Label} 5 | ]]> 6 | 7 | checkbox 8 | 9 | Checkbox - Protostrap 10 | HTML 11 | -------------------------------------------------------------------------------- /addons/sublime/typeahead.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ]]> 6 | 7 | typeahead 8 | 9 | Typeahead - Protostrap 10 | HTML 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/collapse.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | ">${2:Trigger} 3 |
    4 | 5 |
    ]]>
    6 | 7 | coll 8 | 9 | Collapse - Protostrap 10 | HTML 11 |
    -------------------------------------------------------------------------------- /addons/sublime/inputDate.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ]]> 6 | 7 | inputdate 8 | 9 | Input Date - Protostrap 10 | HTML 11 | 12 | -------------------------------------------------------------------------------- /addons/sublime/select.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ]]> 7 | 8 | selectpicker 9 | 10 | Select - Protostrap 11 | HTML 12 | 13 | -------------------------------------------------------------------------------- /addons/sublime/table.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ]]> 14 | 15 | pstable 16 | 17 | Table - Protostrap 18 | HTML 19 | 20 | -------------------------------------------------------------------------------- /addons/sublime/inputgroup.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | ${1:${2:pre}} 4 | 5 | ${4:${5:post}} 6 | ]]> 7 | 8 | inputgr 9 | 10 | Input Group - Protostrap 11 | HTML 12 | 13 | -------------------------------------------------------------------------------- /addons/sublime/formText.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 | ]]>
    8 | 9 | formtext 10 | 11 | Form Group Text - Protostrap 12 | HTML 13 |
    14 | -------------------------------------------------------------------------------- /addons/sublime/btnGroup.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ]]> 7 | 8 | btngr 9 | 10 | Button Group - Protostrap 11 | HTML 12 | 13 | 14 | -------------------------------------------------------------------------------- /addons/sublime/formCheckbox.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    5 | 8 |
    9 |
    10 | ]]>
    11 | 12 | formchk 13 | 14 | Form Group Checkbox - Protostrap 15 | HTML 16 |
    17 | -------------------------------------------------------------------------------- /addons/sublime/media.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
    7 | ${3:Headline} 8 | ${4:Bodytext} 9 |
    10 | ]]>
    11 | 12 | media 13 | 14 | Media - Protostrap 15 | HTML 16 |
    17 | -------------------------------------------------------------------------------- /core/assets/css/jquery-sortable.min.css: -------------------------------------------------------------------------------- 1 | .connected,.exclude,.handles,.sortable{margin:auto;padding:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sortable.grid{overflow:hidden}.connected li,.exclude li,.handles li,.sortable li{list-style:none;cursor:move}.handles span{cursor:move}li.disabled{opacity:.8}.sortable.grid li{line-height:80px;float:left;width:80px;height:80px;text-align:center;border:1px solid #ddd}li.highlight{background:#FEE25F}#connected{width:440px;overflow:hidden;margin:auto}.connected{float:left;width:200px}.connected.no2{float:right}li.sortable-placeholder{border:1px dashed #CCC;background-color:#eee;height:43px} -------------------------------------------------------------------------------- /addons/sublime/toggleSingleBtn.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ]]> 7 | 8 | togglesingle 9 | 10 | Toggle Single Primary Protostrap PS 11 | 12 | -------------------------------------------------------------------------------- /assets/img/sort-asc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Created with Sketch. 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/img/sort.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Created with Sketch. 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /addons/sublime/btnGrouptoggleSingle.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ]]> 7 | 8 | togglesingle 9 | 10 | Button Group with Toggle Single Primary - Protostrap 11 | HTML 12 | 13 | -------------------------------------------------------------------------------- /assets/img/sort-desc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Created with Sketch. 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/data/users.yml: -------------------------------------------------------------------------------- 1 | users: 2 | addId: true 3 | 1: 4 | fullName: Sara Default 5 | email: one@company.com 6 | username: sara 7 | role: user 8 | 2: 9 | fullName: Mara Admin 10 | email: two@company.com 11 | username: mara 12 | role: admin 13 | 3: 14 | fullName: Lara Superadmin 15 | email: three@company.com 16 | username: lara 17 | role: superadmin 18 | 19 | roles: 20 | superadmin: 21 | name: Superadmin 22 | permissions: ['createData', 'editData', 'deleteData','addUser'] 23 | admin: 24 | name: Admin 25 | permissions: ['createData', 'editData', 'deleteData'] 26 | user: 27 | name: Default User 28 | permissions: ['editData'] 29 | guest: 30 | name: Guest User 31 | permissions: [ ] -------------------------------------------------------------------------------- /addons/sublime/splitButton.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ${1:Label} 5 | 6 | 7 | 12 | ]]> 13 | 14 | splitbtn 15 | 16 | Split Button - Protostrap 17 | HTML 18 | 19 | 20 | -------------------------------------------------------------------------------- /addons/sublime/accordeonGroup.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |

    5 | 6 | ${1:One} 7 | 8 |

    9 |
    10 |
    11 |
    12 | OneBody 13 |
    14 |
    15 | ]]>
    16 | 17 | acgr 18 | 19 | Accordeon Group - Protostrap 20 | HTML 21 |
    22 | 23 | -------------------------------------------------------------------------------- /snippets/footer.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/sublime/fileupload.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    Select fileChangeRemove 5 |
    6 | 7 | ${1:Upload}]]>
    8 | 9 | fileupload 10 | 11 | Fileupload - Protostrap 12 | HTML 13 |
    14 | -------------------------------------------------------------------------------- /snippets/forceLogin.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
    8 | 9 |
    10 |

    11 | 12 |

    13 | 15 | 16 |
    17 | 18 | 20 | 21 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /addons/sublime/card.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | Card image cap 5 |
    6 |

    Star small round

    7 |

    A card with a round heart icon button that toggles to primary.
    8 |
    9 | Classes used:
    10 | btn btn-default btn-circle-sm btn-togglePrimary btn-onCard 11 |

    12 |
    13 | ]]>
    14 | 15 | card 16 | 17 | Card - Protostrap 18 | HTML 19 |
    20 | -------------------------------------------------------------------------------- /addons/sublime/tabs.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 8 |
    9 |
    10 | 11 | 12 | 13 |
    14 |
    15 | 16 | 17 | 18 |
    19 |
    20 |
    21 | ]]>
    22 | 23 | tabs 24 | 25 | Tabs - Protostrap 26 | HTML 27 |
    -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | 2 | $(function(){ 3 | // PUT YOUR JAVASCRIPT HERE BELOW 4 | 5 | // Datepicker 6 | $('.input-group.date, .date').datepicker({ 7 | language: "en", 8 | orientation: "auto left", 9 | format: "dd.mm.yyyy", 10 | autoclose: true, 11 | todayHighlight: true 12 | }); 13 | 14 | 15 | $("#socialsecurity").mask("99-99-9999",{placeholder:"__-__-____"}); 16 | 17 | $(".mypopover").popover(); 18 | 19 | $(".htmlpopover").popover({ 20 | container: 'body', 21 | html: true, 22 | template: '', 23 | content: function () { 24 | var content = $("#"+$(this).data('content-div')).html(); 25 | return content; 26 | } 27 | }); 28 | 29 | 30 | 31 | }) -------------------------------------------------------------------------------- /addons/sublime/formRadio.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 |
    6 | 9 |
    10 |
    11 | 14 |
    15 |
    16 | 19 |
    20 |
    21 | ]]>
    22 | 23 | formradio 24 | 25 | Form Group Radio - Protostrap 26 | HTML 27 |
    28 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine on 2 | Options -Multiviews 3 | 4 | #set password for staging-environment (e.g. on a server reachable by clients) 5 | 6 | SetEnvIf Host staging.domain.com passreq 7 | AuthType Basic 8 | AuthName "Password Required" 9 | AuthUserFile /full/path/to/.htpasswd 10 | Require valid-user 11 | Order allow,deny 12 | Allow from all 13 | Deny from env=passreq 14 | Satisfy any 15 | 16 | # This redirects any links that do not work to the file fileNotFound.php 17 | RewriteCond %{SCRIPT_FILENAME} !-f 18 | RewriteCond %{SCRIPT_FILENAME} !-d 19 | RewriteRule ^(.*)$ fileNotFound.php/$1 20 | 21 | 22 | # this compresses the filesize 23 | AddOutputFilterByType DEFLATE text/plain 24 | AddOutputFilterByType DEFLATE text/html 25 | AddOutputFilterByType DEFLATE text/xml 26 | AddOutputFilterByType DEFLATE text/css 27 | AddOutputFilterByType DEFLATE application/xml 28 | AddOutputFilterByType DEFLATE application/xhtml+xml 29 | AddOutputFilterByType DEFLATE application/rss+xml 30 | AddOutputFilterByType DEFLATE application/javascript 31 | AddOutputFilterByType DEFLATE application/x-javascript -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | 2 | .header-fixed { 3 | padding-top: 60px; 4 | } 5 | 6 | 7 | ul.list-group.list-touchfriendly li { 8 | min-height: 44px; 9 | border-radius: 0; 10 | 11 | } 12 | /*ul.list-group.list-touchfriendly li{ 13 | width:100%; 14 | min-height: 44px; 15 | vertical-align: middle; 16 | }*/ 17 | 18 | ul.list-group.list-touchfriendly a li.list-group-item{ 19 | padding:0; 20 | margin:0; 21 | display: flex; 22 | flex-direction: column; 23 | justify-content: center; 24 | border-left: 0; 25 | border-right: 0; 26 | border-bottom: 0; 27 | } 28 | 29 | 30 | ul.list-group.list-touchfriendly { 31 | border-bottom: 1px solid #ddd; 32 | } 33 | 34 | 35 | 36 | div.list-touchfriendly a { 37 | border-top: 1px solid #ddd; 38 | 39 | padding:0; 40 | margin:0; 41 | display: flex; 42 | flex-direction: column; 43 | justify-content: center; 44 | border-left: 0; 45 | border-right: 0; 46 | border-bottom: 0; 47 | min-height: 44px; 48 | } 49 | div.list-touchfriendly a:last-child { 50 | border-bottom: 1px solid #ddd; 51 | } -------------------------------------------------------------------------------- /assets/data/data.yml: -------------------------------------------------------------------------------- 1 | applicationKey: mySite 2 | application: My Site 3 | brand: My Brand 4 | favoriteColor: Red 5 | 6 | # The following is dummy data 7 | 8 | carousel: 9 | 0: 10 | image: "gallery1.jpg" 11 | caption-title: "Caption 1" 12 | caption-text: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 13 | 1: 14 | image: "gallery2.jpg" 15 | caption-title: "Caption 2" 16 | caption-text: "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo" 17 | 2: 18 | image: "gallery3.jpg" 19 | caption-title: "Caption 3" 20 | caption-text: "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." 21 | 22 | people: 23 | 1: 24 | name: Anna Alpha 25 | img: f_1 26 | function: Head of Sales 27 | email: anna.alpha@acme.com 28 | 29 | 2: 30 | name: Bruno Bravo 31 | img: m_8 32 | function: Marketing Specialist 33 | email: bruno.bravo@company.com 34 | 35 | 3: 36 | name: Chucky Charly 37 | img: m_9 38 | function: Strategy Consultant 39 | email: 40 | 41 | 4: 42 | name: Doris Delta 43 | img: f_2 44 | function: Member of the Board 45 | email: 46 | -------------------------------------------------------------------------------- /assets/img/placeholderImage.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Created with Sketch. 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /addons/sublime/modal.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | ${2:}]]> 22 | 23 | modal 24 | 25 | Modal - Protostrap 26 | HTML 27 | 28 | -------------------------------------------------------------------------------- /addons/sublime/accordeon.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 4 |
    5 | 10 |
    11 |
    12 | One Body 13 |
    14 |
    15 |
    16 |
    17 | 22 |
    23 |
    24 | Two Body 25 |
    26 |
    27 |
    28 | ]]>
    29 | 30 | acc 31 | 32 | Accordeon - Protostrap 33 | HTML 34 |
    35 | 36 | -------------------------------------------------------------------------------- /core/assets/css/tablesorter.min.css: -------------------------------------------------------------------------------- 1 | /* tables */ 2 | table.tablesorter { 3 | font-family:arial; 4 | background-color: #CDCDCD; 5 | margin:10px 0pt 15px; 6 | width: 100%; 7 | text-align: left; 8 | } 9 | table.tablesorter thead tr th, table.tablesorter tfoot tr th { 10 | background-color: #FFF; 11 | border: 1px solid #FFF; 12 | padding: 4px; 13 | } 14 | table.tablesorter thead tr .header { 15 | background-image: url(../../../assets/img/sort.svg); 16 | background-repeat: no-repeat; 17 | background-position: right center ; 18 | cursor: pointer; 19 | background-size: contain; 20 | } 21 | table.tablesorter tbody td { 22 | color: #3D3D3D; 23 | padding: 4px; 24 | background-color: #FFF; 25 | vertical-align: top; 26 | } 27 | table.tablesorter tbody tr.odd td { 28 | background-color:#F0F0F6; 29 | } 30 | 31 | table.tablesorter thead tr .headerSortUp { 32 | background-image: url(../../../assets/img/sort-desc.svg); 33 | background-repeat: no-repeat; 34 | background-position: right center ; 35 | cursor: pointer; 36 | background-size: contain; 37 | } 38 | table.tablesorter thead tr .headerSortDown { 39 | background-image: url(../../../assets/img/sort-asc.svg); 40 | background-repeat: no-repeat; 41 | background-position: right center ; 42 | cursor: pointer; 43 | background-size: contain; 44 | } 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /snippets/prototypeauth.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <?php echo __("authTitle") ;?> 5 | 10 | 11 | 12 | 13 |
    14 | 15 |
    16 |

    17 |
    18 | "; 21 | } ?> 22 | 23 |
    24 | 25 | 26 |
    27 | 28 |
    29 |

    30 | 31 |
    32 | 33 | 35 | 36 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /snippets/typeahead.php: -------------------------------------------------------------------------------- 1 | //TYPEAHEAD EXAMPLE in 3 Parts 2 | // Documentation: https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md 3 | // Doc-Passage on datasets: https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#datasets 4 | 5 | // Part 1: the Matcher Function 6 | // LEAVE ALONE 7 | var substringMatcher=function(e){return function(t,s){var n;n=[],substrRegex=new RegExp(t,"i"),$.each(e,function(e,t){void 0!=t.name?substrRegex.test(t.name)&&n.push(t):substrRegex.test(t)&&n.push(t)}),s(n)}}; 8 | 9 | // Part 2: the Source Data 10 | var sourcedata = { 11 | 0: {name:'foo bar', price:'6.99'}, 12 | 1: {name:'foo fighters ticket', price:'12.49'}, 13 | 2: {name:'a fools errand', price:'18.00'}, 14 | 3: {name:'football', price:'26.49'} 15 | }; 16 | 17 | 18 | // Part 3: the Typeahead itself 19 | 20 | // Typeahad options 21 | $('.typeahead').typeahead({ 22 | highlight: true, 23 | minLength: 1 24 | }, 25 | 26 | // Typeahead source and templates 27 | { 28 | source: substringMatcher(sourcedata), 29 | templates: { 30 | notFound: '

    No entries found

    ', 31 | footer: '', 32 | suggestion: function(data){ 33 | return '

    ' + data.name + ' $' + data.price + '

    '; 34 | } 35 | } 36 | }) 37 | 38 | // Typeahead callback 39 | .on('typeahead:selected', function (event, selected) { 40 | console.log(selected.name); 41 | }); 42 | 43 | // END OF TYPEAHEAD EXAMPLE -------------------------------------------------------------------------------- /snippets/optionsDropdown.php: -------------------------------------------------------------------------------- 1 | 27 |
    28 | 31 | 38 |
    -------------------------------------------------------------------------------- /assets/data/translations.yml: -------------------------------------------------------------------------------- 1 | languages: 2 | en: English 3 | de: Deutsch 4 | 5 | # GOOGLE DRIVE SPREADSHEET 6 | # ------------------------ 7 | # Please note: 8 | # - This is a link to a read only spread sheet. 9 | # - Replace this with a link to one of your files. 10 | # - You must be online for this to work 11 | 12 | # translations_url: "https://docs.google.com/spreadsheets/d/16qLrNxktIKivd4aVoWzJlJ_-wKw9afxSDlp8-3RtX0U/edit?usp=sharing" 13 | 14 | 15 | # LOCAL CSV FILE 16 | # ------------------------ 17 | # If you prefer you can have a local CSV file. This is useful if you want to work offline or have privacy concerns. 18 | # Please note: 19 | # - The field delimiter is a comma and the row delimiter a new line. 20 | # - Escape commas that are part of the translations. 21 | 22 | # translations_url: "assets/csv/translations.csv" 23 | 24 | # TEXT ARRAYS 25 | # ------------------------ 26 | # If you prefer you can have translations as text arrays. 27 | # Please note that these are ignored if a spread sheet or CSV file is used. 28 | translations: 29 | cancel: 30 | de: Abbrechen 31 | en: Cancel 32 | save: 33 | de: Speichern 34 | en: Save 35 | send: 36 | de: Senden 37 | en: Send 38 | signIn: 39 | de: Anmelden 40 | en: Sign in 41 | thisIsAtest: 42 | de: Das ist ein Test. 43 | en: This is a test. 44 | startHere: 45 | de: Hier starten. 46 | en: Start Here. 47 | endOfPrototype: 48 | de: Hier endet der Prototyp. 49 | en: End of Prototype. 50 | authTitle: 51 | de: "Prototyp Autorisierung" 52 | en: "Prototype Authorisation" 53 | authText: 54 | de: "Autorisierungscode eingeben " 55 | en: "Enter Authorisation Code" 56 | authError: 57 | de: "Code Falsch, bitte nochmals versuchen. " 58 | en: "Wrong Code, please try again" -------------------------------------------------------------------------------- /addons/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ## Place this file inside the Document Root folder of your web server 4 | 5 | clear 6 | 7 | # Get Protostrap 8 | echo "\n\n" 9 | read -p " Project Name: " name 10 | curl -LOk https://github.com/liip/Protostrap/archive/master.zip && unzip master.zip 11 | mv Protostrap-master $name 12 | 13 | clear 14 | 15 | # Setup git? 16 | echo "\n\n" 17 | read -p " Setup Github Repository? y/n: " gitaufsetzen 18 | if [ "$gitaufsetzen" == "y" ] ; then 19 | 20 | # Copy password to clipboard 21 | # -> THIS IS A HACK - PLEASE TAKE NOTE 22 | # 23 | # Github will ask you for your password to set up the repository. 24 | # The following command will copy the text in quotation marks to the clipboard. 25 | # When asked for your credentials type CMD+V 26 | echo "YOUR-GITHUB-PASS" | pbcopy 27 | 28 | clear 29 | cd $name 30 | git init 31 | git add . 32 | git commit -m "Initial commit" 33 | 34 | #change USERNAMR 35 | curl -u 'USERNAME' https://api.github.com/user/repos -d '{"name": "'$name'"}' 36 | # Remember replace USER with your username and REPO with your repository/application name! 37 | git remote add origin git@github.com:USERNAME/$name.git 38 | git push origin master 39 | cd .. 40 | fi 41 | 42 | clear 43 | 44 | #setup sublime? 45 | echo "\n\n" 46 | read -p " Setup Sublime Project? y/n: " sublime 47 | if [ "$sublime" == "y" ] ; then 48 | 49 | cat <$name.sublime-project 50 | { 51 | "folders": 52 | [ 53 | { 54 | "path": "$PWD/$name" 55 | } 56 | ] 57 | } 58 | EOF 59 | 60 | /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl $PWD/$name 61 | fi 62 | open http://localhost/$name 63 | 64 | echo "\n\n" 65 | echo " Done." 66 | echo "\n\n" -------------------------------------------------------------------------------- /assets/data/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | config: 3 | datepickerFormat: dd.mm.yyyy 4 | defaultPHPdateFormat: d.m.Y 5 | defaultUser: 1 6 | loginWith: email 7 | prototypeauth: 8 | assets: 9 | extendBootstrapGrid: 10 | title: Bootstrap Grid Extention CSS 11 | load: 'false' 12 | init: 13 | tablesorter: 14 | title: Tablesorter Plugin 15 | load: 1 16 | init: "$('.tablesorter').tablesorter()" 17 | select: 18 | title: Bootstrap Select Plugin 19 | load: 1 20 | init: "$('.selectpicker').selectpicker()" 21 | switch: 22 | title: Bootstrap Switch Plugin 23 | load: 1 24 | init: $(".switch").bootstrapSwitch() 25 | datepicker: 26 | title: Bootstrap Datepicker Plugin 27 | load: 1 28 | init: 29 | file: 30 | title: Bootstrap File Input Plugin 31 | load: 1 32 | init: "$('input[type=file]').bootstrapFileInput()" 33 | typeahead: 34 | title: Twitter Typeahead Plugin 35 | load: 1 36 | init: 37 | add2home: 38 | title: Add to Home-Screen 39 | load: 'false' 40 | init: addToHomescreen() 41 | fastclick: 42 | title: Fastclick extentions 43 | load: 'false' 44 | init: FastClick.attach(document.body) 45 | sortable: 46 | title: jQuery Sortable Plugin 47 | load: 1 48 | init: "$('.sortable').sortable()" 49 | hotkeys: 50 | title: jQuery Hotkeys Plugin 51 | load: 1 52 | init: 53 | maskedinput: 54 | title: jQuery Masked Input Plugin 55 | load: 1 56 | init: 57 | nouislider: 58 | title: 'noUiSlider - A mobile friendly slider' 59 | load: 1 60 | init: 61 | fontawesome: 62 | title: Fontawesome Icons 63 | load: 1 64 | init: 65 | ionicons: 66 | title: Ionicons Icons 67 | load: 1 68 | init: 69 | pagetransitions: 70 | title: Pagetransitions 71 | load: 1 72 | init: 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Protostrap - a data driven prototyping framework for designers 2 | 3 | #### Version 3.1 4 | 5 | Protostrap is a framework intended for high-end prototypes of complex, content-rich applications. 6 | It helps you design role based experiences using almost real data. 7 | 8 | Documentation: http://protostrap.ch/start.php 9 | Demo: http://demo.protostrap.ch 10 | 11 | ## Acknowledgments 12 | This project started at Liip in 2012 and was kindly transferred to Less A Mess in early 2016. 13 | Sincerest thanks to all at Liip for encouraging and supporting Protostrap! 14 | Check out https://liip.ch and https://github.com/liip 15 | 16 | 17 | ## License 18 | 19 | The original parts of Protostrap are licensed under the MIT Licence. All third party libraries are licensed under their respective original Licenses. 20 | 21 | MIT License 22 | 23 | Copyright (c) 2017 Memi Beltrame and other contributors 24 | 25 | Permission is hereby granted, free of charge, to any person obtaining a copy 26 | of this software and associated documentation files (the "Software"), to deal 27 | in the Software without restriction, including without limitation the rights 28 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 29 | copies of the Software, and to permit persons to whom the Software is 30 | furnished to do so, subject to the following conditions: 31 | 32 | The above copyright notice and this permission notice shall be included in all 33 | copies or substantial portions of the Software. 34 | 35 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 36 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 37 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 38 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 39 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 40 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 41 | SOFTWARE. 42 | -------------------------------------------------------------------------------- /fileNotFound.php: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | File not Found - <?php echo $application . " - " . $brand ;?> 16 | 17 | 21 | 22 | 23 | 24 | 25 | 39 |
    40 | 41 | 43 |
    44 |
    45 |

    End of Prototype

    46 |

    The Prototype ends here.

    47 |

    48 | 49 | Go back one step 50 | 51 |

    52 |
    53 | 54 |
    55 | 56 | 58 | 59 |
    60 | 61 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /snippets/loginForm.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    9 | 10 |

    Sign in

    11 |
    12 |
    13 |
    14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 |
    23 | 24 |
    25 | 26 |
    27 | 28 | Show 29 |
    30 |
    31 | 32 | 33 |
    34 |
    35 | 36 | User-Roles
    37 | Click the following to sign in as:
    38 | $user){ ?> 39 |
    40 | "; 43 | 44 | if ($loggedIn){ 45 | echo "You are currently signed in as:
    ". $activeUser['fullName']."
    Role: ".$roles[$userrole]['name']."
    ";?> 46 | Log out 47 | 50 |
    51 |
    -------------------------------------------------------------------------------- /addons/sublime/carousel.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 7 | ]]> 49 | 50 | carousel 51 | 52 | Carousel - Protostrap 53 | HTML 54 | 55 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | <?php echo $application . " - " . $brand ;?> 17 | 22 | 23 | 24 | 28 | 29 | 30 |
    31 | 32 | 35 | 36 |

    Change this in snippets/navBarTop.php

    37 |

    38 |
    39 |

    READY.

    40 |

    41 |
    42 | Go to the Admin Panel 43 |

    44 | Go to the Test-Page 45 |
    46 | or Read the Documentation 47 |

    48 |
    49 | 50 |

    51 |

    Change this in snippets/footer.php

    52 | 54 | 55 | 56 |
    57 | 58 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /core/assets/js/jquery.hotkeys.min.js: -------------------------------------------------------------------------------- 1 | !function(t){function e(e){if("string"==typeof e.data&&(e.data={keys:e.data}),e.data&&e.data.keys&&"string"==typeof e.data.keys){var a=e.handler,s=e.data.keys.toLowerCase().split(" ");e.handler=function(e){if(this===e.target||!(t.hotkeys.options.filterInputAcceptingElements&&t.hotkeys.textInputTypes.test(e.target.nodeName)||t.hotkeys.options.filterContentEditable&&t(e.target).attr("contenteditable")||t.hotkeys.options.filterTextInputs&&t.inArray(e.target.type,t.hotkeys.textAcceptingInputTypes)>-1)){var n="keypress"!==e.type&&t.hotkeys.specialKeys[e.which],i=String.fromCharCode(e.which).toLowerCase(),r="",o={};t.each(["alt","ctrl","shift"],function(t,a){e[a+"Key"]&&n!==a&&(r+=a+"+")}),e.metaKey&&!e.ctrlKey&&"meta"!==n&&(r+="meta+"),e.metaKey&&"meta"!==n&&r.indexOf("alt+ctrl+shift+")>-1&&(r=r.replace("alt+ctrl+shift+","hyper+")),n?o[r+n]=!0:(o[r+i]=!0,o[r+t.hotkeys.shiftNums[i]]=!0,"shift+"===r&&(o[t.hotkeys.shiftNums[i]]=!0));for(var p=0,l=s.length;l>p;p++)if(o[s[p]])return a.apply(this,arguments)}}}}t.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",10:"return",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"},textAcceptingInputTypes:["text","password","number","email","url","range","date","month","week","time","datetime","datetime-local","search","color","tel"],textInputTypes:/textarea|input|select/i,options:{filterInputAcceptingElements:!0,filterTextInputs:!0,filterContentEditable:!0}},t.each(["keydown","keyup","keypress"],function(){t.event.special[this]={add:e}})}(jQuery||this.jQuery||window.jQuery); -------------------------------------------------------------------------------- /snippets/iosTopbar.php: -------------------------------------------------------------------------------- 1 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /snippets/meta_javascripts.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 26 | 27 | 28 | 45 | 46 | -------------------------------------------------------------------------------- /core/updateSessionVar.php: -------------------------------------------------------------------------------- 1 | $item){ 9 | if($item == $activeNavigation) { 10 | $tabbarClasses[$key] = "active"; 11 | } 12 | } 13 | ?> 14 | 15 | 16 | 17 | 51 | -------------------------------------------------------------------------------- /core/assets/css/extendBootstrapGrid.min.css: -------------------------------------------------------------------------------- 1 | @media (min-width:1300px){.container{width:1270px}}@media (min-width:1400px){.container{width:1370px}}@media (min-width:1500px){.container{width:1470px}}@media (min-width:1600px){.container{width:1570px}}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:1600px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-12{width:100%}.col-xl-11{width:91.66666666666666%}.col-xl-10{width:83.33333333333334%}.col-xl-9{width:75%}.col-xl-8{width:66.66666666666666%}.col-xl-7{width:58.333333333333336%}.col-xl-6{width:50%}.col-xl-5{width:41.66666666666667%}.col-xl-4{width:33.33333333333333%}.col-xl-3{width:25%}.col-xl-2{width:16.666666666666664%}.col-xl-1{width:8.333333333333332%}.col-xl-pull-12{right:100%}.col-xl-pull-11{right:91.66666666666666%}.col-xl-pull-10{right:83.33333333333334%}.col-xl-pull-9{right:75%}.col-xl-pull-8{right:66.66666666666666%}.col-xl-pull-7{right:58.333333333333336%}.col-xl-pull-6{right:50%}.col-xl-pull-5{right:41.66666666666667%}.col-xl-pull-4{right:33.33333333333333%}.col-xl-pull-3{right:25%}.col-xl-pull-2{right:16.666666666666664%}.col-xl-pull-1{right:8.333333333333332%}.col-xl-pull-0{right:0}.col-xl-push-12{left:100%}.col-xl-push-11{left:91.66666666666666%}.col-xl-push-10{left:83.33333333333334%}.col-xl-push-9{left:75%}.col-xl-push-8{left:66.66666666666666%}.col-xl-push-7{left:58.333333333333336%}.col-xl-push-6{left:50%}.col-xl-push-5{left:41.66666666666667%}.col-xl-push-4{left:33.33333333333333%}.col-xl-push-3{left:25%}.col-xl-push-2{left:16.666666666666664%}.col-xl-push-1{left:8.333333333333332%}.col-xl-push-0{left:0}.col-xl-offset-12{margin-left:100%}.col-xl-offset-11{margin-left:91.66666666666666%}.col-xl-offset-10{margin-left:83.33333333333334%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-8{margin-left:66.66666666666666%}.col-xl-offset-7{margin-left:58.333333333333336%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-5{margin-left:41.66666666666667%}.col-xl-offset-4{margin-left:33.33333333333333%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-2{margin-left:16.666666666666664%}.col-xl-offset-1{margin-left:8.333333333333332%}.col-xl-offset-0{margin-left:0}}@media (min-width:1700px){.container{width:1670px}}@media (min-width:1800px){.container{width:1770px}}@media (min-width:1900px){.container{width:1870px}} -------------------------------------------------------------------------------- /core/assets/css/bootstrap-fileupload.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v2.3.1-j6 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world by @mdo and @fat, extended by @ArnoldDaniels. 9 | */ 10 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 11 | .clearfix:after{clear:both;} 12 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 13 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 14 | .btn-file{overflow:hidden;position:relative;vertical-align:middle;}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);transform:translate(-300px, 0) scale(4);font-size:23px;direction:ltr;cursor:pointer;} 15 | .fileupload{margin-bottom:9px;}.fileupload .uneditable-input{display:inline-block;margin-bottom:0px;vertical-align:middle;cursor:text;} 16 | .fileupload .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center;}.fileupload .thumbnail>img{display:inline-block;vertical-align:middle;max-height:100%;} 17 | .fileupload .btn{vertical-align:middle;} 18 | .fileupload-exists .fileupload-new,.fileupload-new .fileupload-exists{display:none;} 19 | .fileupload-inline .fileupload-controls{display:inline;} 20 | .fileupload-new .input-append .btn-file{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} 21 | .thumbnail-borderless .thumbnail{border:none;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} 22 | .fileupload-new.thumbnail-borderless .thumbnail{border:1px solid #ddd;} 23 | .control-group.warning .fileupload .uneditable-input{color:#a47e3c;border-color:#a47e3c;} 24 | .control-group.warning .fileupload .fileupload-preview{color:#a47e3c;} 25 | .control-group.warning .fileupload .thumbnail{border-color:#a47e3c;} 26 | .control-group.error .fileupload .uneditable-input{color:#b94a48;border-color:#b94a48;} 27 | .control-group.error .fileupload .fileupload-preview{color:#b94a48;} 28 | .control-group.error .fileupload .thumbnail{border-color:#b94a48;} 29 | .control-group.success .fileupload .uneditable-input{color:#468847;border-color:#468847;} 30 | .control-group.success .fileupload .fileupload-preview{color:#468847;} 31 | .control-group.success .fileupload .thumbnail{border-color:#468847;} 32 | -------------------------------------------------------------------------------- /snippets/meta_headTag.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /core/assets/js/jquery-sortable.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * HTML5 Sortable jQuery Plugin 3 | * https://github.com/voidberg/html5sortable 4 | * 5 | * Original code copyright 2012 Ali Farhadi. 6 | * This version is mantained by Alexandru Badiu 7 | * 8 | * Thanks to the following contributors: andyburke, bistoco, daemianmack, drskullster, flying-sheep, OscarGodson, Parikshit N. Samant, rodolfospalenza, ssafejava 9 | * 10 | * Released under the MIT license. 11 | */ 12 | "use strict";!function(t){var e,a,r=t();t.fn.sortable=function(i){var s=String(i);return i=t.extend({connectWith:!1,placeholder:null,dragImage:null},i),this.each(function(){var n,d=t(this).children(i.items),o=i.handle?d.find(i.handle):d;if("reload"===s&&t(this).children(i.items).off("dragstart.h5s dragend.h5s selectstart.h5s dragover.h5s dragenter.h5s drop.h5s"),/^enable|disable|destroy$/.test(s)){var h=t(this).children(t(this).data("items")).attr("draggable","enable"===s);return void("destroy"===s&&(t(this).off("sortupdate"),t(this).removeData("opts"),h.add(this).removeData("connectWith items").off("dragstart.h5s dragend.h5s dragover.h5s dragenter.h5s drop.h5s").off("sortupdate"),o.off("selectstart.h5s")))}var l=t(this).data("opts");"undefined"==typeof l?t(this).data("opts",i):i=l;var g,c,f=null===i.placeholder?t("<"+(/^ul|ol$/i.test(this.tagName)?"li":"div")+' class="sortable-placeholder"/>'):t(i.placeholder).addClass("sortable-placeholder");t(this).data("items",i.items),r=r.add(f),i.connectWith&&t(i.connectWith).add(this).data("connectWith",i.connectWith),d.attr("role","option"),d.attr("aria-grabbed","false"),o.attr("draggable","true").not("a[href], img").on("selectstart.h5s",function(){return this.dragDrop&&this.dragDrop(),!1}).end(),d.on("dragstart.h5s",function(r){var s=r.originalEvent.dataTransfer;s.effectAllowed="move",s.setData("text",""),i.dragImage&&s.setDragImage&&s.setDragImage(i.dragImage,0,0),n=(e=t(this)).addClass("sortable-dragging").attr("aria-grabbed","true").index(),a=e.outerHeight(),g=t(this).parent(),e.parent().triggerHandler("sortstart",{item:e,startparent:g})}).on("dragend.h5s",function(){e&&(e.removeClass("sortable-dragging").attr("aria-grabbed","false").show(),r.detach(),c=t(this).parent(),(n!==e.index()||g.get(0)!==c.get(0))&&e.parent().triggerHandler("sortupdate",{item:e,oldindex:n,startparent:g,endparent:c}),e=null,a=null)}).add([this,f]).on("dragover.h5s dragenter.h5s drop.h5s",function(s){if(!d.is(e)&&i.connectWith!==t(e).parent().data("connectWith"))return!0;if("drop"===s.type)return s.stopPropagation(),r.filter(":visible").after(e),e.trigger("dragend.h5s"),!1;if(s.preventDefault(),s.originalEvent.dataTransfer.dropEffect="move",d.is(this)){var n=t(this).outerHeight();if(i.forcePlaceholderSize&&f.height(a),n>a){var o=n-a,h=t(this).offset().top;if(f.index()t(this).index()&&s.originalEvent.pageY>h+n-o)return!1}e.hide(),t(this)[f.index() 12 | 13 | 14 | 15 | $feld) { 17 | switch ($feld) { 18 | case 'Download': ?> 19 | 20 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | $feld) { 32 | switch ($feld) { 33 | case 'Download': ?> 34 | 35 | "; 39 | } else { ?> 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | $filterrow) { ?> 52 | 53 | $feld) { ?> 54 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |
     
    58 | 59 | 68 |
    76 | -------------------------------------------------------------------------------- /snippets/navBarTop.php: -------------------------------------------------------------------------------- 1 | $item){ 10 | if($item == $activeNavigation) { 11 | $navbarClasses[$key] = "active"; 12 | } 13 | } 14 | ?> 15 | 16 | 17 | -------------------------------------------------------------------------------- /core/assets/css/nouislider.min.css: -------------------------------------------------------------------------------- 1 | /*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */ 2 | 3 | 4 | .noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative;direction:ltr}.noUi-base{width:100%;height:100%;position:relative;z-index:1}.noUi-connect{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-origin{position:absolute;height:0;width:0}.noUi-handle{position:relative;z-index:1}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:top .3s,right .3s,bottom .3s,left .3s;transition:top .3s,right .3s,bottom .3s,left .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-base,.noUi-handle{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-target{background:#FAFAFA;border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#B8B8B8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-large,.noUi-marker-sub{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);padding-left:25px}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%} -------------------------------------------------------------------------------- /core/assets/js/jquery.maskedinput.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | jQuery Masked Input Plugin 3 | Copyright (c) 2007 - 2014 Josh Bush (digitalbush.com) 4 | Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) 5 | Version: 1.4.0 6 | */ 7 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(a.length0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.beging)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a)},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})}); -------------------------------------------------------------------------------- /core/assets/js/bootstrap-file-input.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | Bootstrap - File Input 3 | ====================== 4 | 5 | This is meant to convert all file input tags into a set of elements that displays consistently in all browsers. 6 | 7 | Converts all 8 | 9 | into Bootstrap buttons 10 | Browse 11 | 12 | */ 13 | (function($) { 14 | 15 | $.fn.bootstrapFileInput = function() { 16 | 17 | this.each(function(i,elem){ 18 | 19 | var $elem = $(elem); 20 | 21 | // Maybe some fields don't need to be standardized. 22 | if (typeof $elem.attr('data-bfi-disabled') != 'undefined') { 23 | return; 24 | } 25 | 26 | // Set the word to be displayed on the button 27 | var buttonWord = 'Browse'; 28 | 29 | if (typeof $elem.attr('title') != 'undefined') { 30 | buttonWord = $elem.attr('title'); 31 | } 32 | 33 | var className = ''; 34 | 35 | if (!!$elem.attr('class')) { 36 | className = ' ' + $elem.attr('class'); 37 | } 38 | 39 | // Now we're going to wrap that input field with a Bootstrap button. 40 | // The input will actually still be there, it will just be float above and transparent (done with the CSS). 41 | $elem.wrap('').parent().prepend($('').html(buttonWord)); 42 | }) 43 | 44 | // After we have found all of the file inputs let's apply a listener for tracking the mouse movement. 45 | // This is important because the in order to give the illusion that this is a button in FF we actually need to move the button from the file input under the cursor. Ugh. 46 | .promise().done( function(){ 47 | 48 | // As the cursor moves over our new Bootstrap button we need to adjust the position of the invisible file input Browse button to be under the cursor. 49 | // This gives us the pointer cursor that FF denies us 50 | $('.file-input-wrapper').mousemove(function(cursor) { 51 | 52 | var input, wrapper, 53 | wrapperX, wrapperY, 54 | inputWidth, inputHeight, 55 | cursorX, cursorY; 56 | 57 | // This wrapper element (the button surround this file input) 58 | wrapper = $(this); 59 | // The invisible file input element 60 | input = wrapper.find("input"); 61 | // The left-most position of the wrapper 62 | wrapperX = wrapper.offset().left; 63 | // The top-most position of the wrapper 64 | wrapperY = wrapper.offset().top; 65 | // The with of the browsers input field 66 | inputWidth= input.width(); 67 | // The height of the browsers input field 68 | inputHeight= input.height(); 69 | //The position of the cursor in the wrapper 70 | cursorX = cursor.pageX; 71 | cursorY = cursor.pageY; 72 | 73 | //The positions we are to move the invisible file input 74 | // The 20 at the end is an arbitrary number of pixels that we can shift the input such that cursor is not pointing at the end of the Browse button but somewhere nearer the middle 75 | moveInputX = cursorX - wrapperX - inputWidth + 20; 76 | // Slides the invisible input Browse button to be positioned middle under the cursor 77 | moveInputY = cursorY- wrapperY - (inputHeight/2); 78 | 79 | // Apply the positioning styles to actually move the invisible file input 80 | input.css({ 81 | left:moveInputX, 82 | top:moveInputY 83 | }); 84 | }); 85 | 86 | $('body').on('change', '.file-input-wrapper input[type=file]', function(){ 87 | 88 | var fileName; 89 | fileName = $(this).val(); 90 | 91 | // Remove any previous file names 92 | $(this).parent().next('.file-input-name').remove(); 93 | if (!!$(this).prop('files') && $(this).prop('files').length > 1) { 94 | fileName = $(this)[0].files.length+' files'; 95 | } 96 | else { 97 | fileName = fileName.substring(fileName.lastIndexOf('\\') + 1, fileName.length); 98 | } 99 | 100 | // Don't try to show the name if there is none 101 | if (!fileName) { 102 | return; 103 | } 104 | 105 | var selectedFileNamePlacement = $(this).data('filename-placement'); 106 | if (selectedFileNamePlacement === 'inside') { 107 | // Print the fileName inside 108 | $(this).siblings('span').html(fileName); 109 | $(this).attr('title', fileName); 110 | } else { 111 | // Print the fileName aside (right after the the button) 112 | $(this).parent().after(''+fileName+''); 113 | } 114 | }); 115 | 116 | }); 117 | 118 | }; 119 | 120 | // Add the styles before the first stylesheet 121 | // This ensures they can be easily overridden with developer styles 122 | var cssHtml = ''; 127 | $('link[rel=stylesheet]').eq(0).before(cssHtml); 128 | 129 | })(jQuery); -------------------------------------------------------------------------------- /core/index.php: -------------------------------------------------------------------------------- 1 | 36 | 37 | 38 | <?php echo $application . " - " . $brand ;?> 39 | 44 | 45 | 46 | 50 | 51 | 52 |
    53 |
    54 | Back to site
    55 |
    56 |
    57 |

    Protostrap Admin Panel

    58 |
    59 | 60 |
    61 |
    62 | 63 |
    64 | 65 |

    Data

    66 |
    67 | Renew Prototype Session
    68 | 69 |
    You have no links to spreadsheets. Add them to /assets/data/linkedData.yml
    "; 75 | } ?> 76 | 77 | 78 | Import Data from spreadsheets 79 | 80 |
    81 | 82 |
    83 | Open Test-Page 84 |
    85 |
    86 | 87 |
    88 |
    89 |

    Components

    90 | $asset): 92 | $checked = ""; 93 | if($asset['load'] == 1){ 94 | $checked = "checked"; 95 | }?> 96 |
    >

    97 |
    98 |
    99 | 100 |
    101 | core/assets/css/combined.css.
    Please make sure the file is writable.", "info", "inherit" , "boxid" , "dismiss" ); 105 | $disbleWritingCombined = "disabled"; 106 | endif ?> 107 | Write Combined Assets 108 | Last write: " . date ("F d Y H:i:s", filemtime($filename)).""; 112 | } 113 | 114 | ?> 115 |
    116 |
    117 | 118 | 119 |
    120 | 121 | 126 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /core/assets/css/bootstrap-select.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.12.1 (http://silviomoreto.github.io/bootstrap-select) 3 | * 4 | * Copyright 2013-2016 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child)>.btn{border-radius:0}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute;height:0!important;padding:0!important}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} -------------------------------------------------------------------------------- /core/assets/css/bootstrap-switch.min.css: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * bootstrap-switch - v3.0.2 3 | * http://www.bootstrap-switch.org 4 | * ======================================================================== 5 | * Copyright 2012-2013 Mattia Larentis 6 | * 7 | * ======================================================================== 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * ======================================================================== 20 | */ 21 | 22 | .bootstrap-switch{display:inline-block;cursor:pointer;border-radius:4px;border:1px solid;border-color:#ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;min-width:100px;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch.bootstrap-switch-mini{min-width:71px}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding-bottom:4px;padding-top:4px;font-size:10px;line-height:9px}.bootstrap-switch.bootstrap-switch-small{min-width:79px}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding-bottom:3px;padding-top:3px;font-size:12px;line-height:18px}.bootstrap-switch.bootstrap-switch-large{min-width:120px}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding-bottom:9px;padding-top:9px;font-size:16px;line-height:normal}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container{margin-left:0}.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container{margin-left:-50%}.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-container{margin-left:-25%}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-readonly,.bootstrap-switch.bootstrap-switch-indeterminate{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label{cursor:default!important}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch .bootstrap-switch-container{display:inline-block;width:150%;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding-bottom:4px;padding-top:4px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-handle-off{text-align:center;z-index:1;width:33.33333333%}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary{color:#fff;background:#428bca}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;width:33.33333333%;color:#333;background:#fff}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.bootstrap-switch input[type=radio].form-control,.bootstrap-switch input[type=checkbox].form-control{height:auto} -------------------------------------------------------------------------------- /core/assets/js/pagetransitions.min.js: -------------------------------------------------------------------------------- 1 | var PageTransitions = (function() { 2 | 3 | var $main = $( '#pt-main' ), 4 | $pages = $main.children( 'div.pt-page' ), 5 | $iterate = $( '.goto' ), 6 | animcursor = 1, 7 | pagesCount = $pages.length, 8 | isAnimating = false, 9 | endCurrPage = false, 10 | endNextPage = false, 11 | // animation end event name 12 | animEndEventName = "animationend", 13 | // support css animations 14 | support = true; 15 | 16 | 17 | function init() { 18 | 19 | $pages.each( function() { 20 | var $page = $( this ); 21 | var i = 0; 22 | $page.data( 'originalClassList', $page.attr( 'class' ) ); 23 | if($page.hasClass("first-page")){ 24 | 25 | $page.addClass("pt-page-current"); 26 | } 27 | } ); 28 | 29 | 30 | 31 | 32 | $iterate.on( 'click', function() { 33 | if( isAnimating ) { 34 | return false; 35 | } 36 | 37 | nextPage( $(this) ); 38 | } ); 39 | 40 | } 41 | 42 | function nextPage(scope ) { 43 | //var animation = (options.animation) ? options.animation : options; 44 | 45 | if( isAnimating ) { 46 | return false; 47 | } 48 | 49 | isAnimating = true; 50 | 51 | // var $currPage = $pages.eq( current ); 52 | var $currPage = $(".pt-page-current"); 53 | 54 | var animation = $(scope).data("animation"); 55 | 56 | 57 | 58 | 59 | // var $nextPage = $pages.eq( current ).addClass( 'pt-page-current' ), 60 | var $nextPage = $("#page-"+ $(scope).data("goto")), 61 | outClass = '', inClass = ''; 62 | $nextPage.addClass( 'pt-page-current' ); 63 | 64 | // change toppar 65 | 66 | if ( $( "#topbar-"+$(scope).data("goto") ).length ) { 67 | $(".topbar").removeClass("topbar-current"); 68 | $( "#topbar-"+$(scope).data("goto") ).addClass("topbar-current"); 69 | } 70 | 71 | 72 | if ( $( "#tabbar-"+$(scope).data("goto") ).length ) { 73 | $(".tabbar").removeClass("tabbar-current"); 74 | $( "#tabbar-"+$(scope).data("goto") ).addClass("tabbar-current"); 75 | 76 | if($( "#tabbar-"+$(scope).data("goto") ).hasClass("hide")){ 77 | $("#tabbarContainer").addClass("hide"); 78 | } else{ 79 | $("#tabbarContainer").removeClass("hide"); 80 | } 81 | } 82 | 83 | 84 | 85 | switch( animation ) { 86 | 87 | case "moveInFromRight": 88 | outClass = 'pt-page-moveToLeft'; 89 | inClass = 'pt-page-moveFromRight'; 90 | break; 91 | case "moveInFromLeft": 92 | outClass = 'pt-page-moveToRight'; 93 | inClass = 'pt-page-moveFromLeft'; 94 | break; 95 | case "moveInFromBottom": 96 | outClass = 'pt-page-moveToTop'; 97 | inClass = 'pt-page-moveFromBottom pt-page-ontop'; 98 | break; 99 | case "moveInFromTop": 100 | outClass = 'pt-page-moveToBottom'; 101 | inClass = 'pt-page-moveFromTop pt-page-ontop'; 102 | break; 103 | case "moveOutFromTop": 104 | outClass = 'pt-page-moveToBottomFade pt-page-ontop'; 105 | inClass = 'pt-page-scaleUp'; 106 | break; 107 | case "moveOutToRight": 108 | outClass = 'pt-page-moveToRightFade'; 109 | inClass = 'pt-page-moveFromLeftFade'; 110 | break; 111 | case "moveOutFromRight": 112 | outClass = 'pt-page-moveToRight'; 113 | inClass = 'pt-page-moveFromLeft'; 114 | break; 115 | case "moveCamInFromBottom": 116 | outClass = 'pt-page-moveToTop'; 117 | inClass = 'pt-page-moveFromBottom pt-page-ontop'; 118 | $("#tabbarContainer").addClass("hide"); 119 | $nextPage.data("topbaraction", 'hide'); 120 | break; 121 | case "moveInFromRightNoTabbar": 122 | outClass = 'pt-page-moveToLeft'; 123 | inClass = 'pt-page-moveFromRight'; 124 | $("#tabbarContainer").addClass("hide"); 125 | break; 126 | case "moveInFromBottomNoTabbar": 127 | outClass = 'pt-page-moveToTop'; 128 | inClass = 'pt-page-moveFromBottom'; 129 | $("#tabbarContainer").addClass("hide"); 130 | break; 131 | case "moveOutFromTopNoTabbar": 132 | outClass = 'pt-page-moveToBottomFade pt-page-ontop'; 133 | inClass = 'pt-page-scaleUp'; 134 | $("#tabbarContainer").addClass("hide"); 135 | break; 136 | case "moveOutFromRightNoTabbar": 137 | outClass = 'pt-page-moveToRight'; 138 | inClass = 'pt-page-moveFromLeft'; 139 | $("#tabbarContainer").addClass("hide"); 140 | break; 141 | case "moveOutFromRightAddTabbar": 142 | outClass = 'pt-page-moveToRight'; 143 | inClass = 'pt-page-moveFromLeft'; 144 | $("#tabbarContainer").removeClass("hide"); 145 | break; 146 | case "moveOutFromTopAddTabbar": 147 | outClass = 'pt-page-moveToBottomFade pt-page-ontop'; 148 | inClass = 'pt-page-scaleUp'; 149 | $("#tabbarContainer").removeClass("hide"); 150 | break; 151 | case "moveCamOutFromTop": 152 | outClass = 'pt-page-moveToBottomFade pt-page-ontop'; 153 | inClass = 'pt-page-scaleUp'; 154 | $(".topbarContainer").removeClass("hide"); 155 | $("#tabbarContainer").removeClass("hide"); 156 | break; 157 | case "moveOutFromTop2": 158 | outClass = 'pt-page-moveToBottom'; 159 | inClass = 'pt-page-moveFromTop'; 160 | break; 161 | 162 | } 163 | 164 | $currPage.addClass( outClass ).on( animEndEventName, function() { 165 | $currPage.off( animEndEventName ); 166 | endCurrPage = true; 167 | if( endNextPage ) { 168 | onEndAnimation( $currPage, $nextPage ); 169 | } 170 | } ); 171 | 172 | $nextPage.addClass( inClass ).on( animEndEventName, function() { 173 | $nextPage.off( animEndEventName ); 174 | endNextPage = true; 175 | if( endCurrPage ) { 176 | onEndAnimation( $currPage, $nextPage ); 177 | } 178 | } ); 179 | 180 | if( !support ) { 181 | onEndAnimation( $currPage, $nextPage ); 182 | } 183 | 184 | } 185 | 186 | function onEndAnimation( $outpage, $inpage ) { 187 | endCurrPage = false; 188 | endNextPage = false; 189 | resetPage( $outpage, $inpage ); 190 | isAnimating = false; 191 | 192 | } 193 | 194 | function resetPage( $outpage, $inpage ) { 195 | $outpage.attr( 'class', $outpage.data( 'originalClassList' ) ); 196 | $inpage.attr( 'class', $inpage.data( 'originalClassList' ) + ' pt-page-current' ); 197 | switch($inpage.data("topbaraction")){ 198 | case 'hide': 199 | $(".topbarContainer").addClass("hide"); 200 | break; 201 | case 'show': 202 | $(".topbarContainer").removeClass("hide"); 203 | break; 204 | } 205 | } 206 | 207 | init(); 208 | 209 | return { 210 | init : init, 211 | nextPage : nextPage, 212 | }; 213 | 214 | })(); -------------------------------------------------------------------------------- /template_mobile.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | <?php echo $application . " - " . $brand ;?> 12 | 17 | 18 | 26 | 27 | 28 | 32 | 33 | 34 |
    35 |
    36 |
    37 | 38 | 39 | 40 |
    41 |
    42 | mobile template 43 |
    44 | 45 | 51 |
    52 | 53 |
    54 |
    55 | 56 |
    57 |
    58 | Notifictions 59 |
    60 |
    61 | 62 |
    63 |
    64 |
    65 |
    66 | 67 |
    68 |
    69 | Page 2 70 |
    71 |
    72 | 73 |
    74 |
    75 |
    76 |
    77 | 78 |
    79 |
    80 | Page 3 81 |
    82 |
    83 | 84 |
    85 |
    86 |
    87 |
    88 | 89 |
    90 |
    91 |
    92 | 93 | 94 | 95 | 159 | 160 | 161 |
    162 |
    163 |

    Start

    164 |
    165 |
    166 |

    Notifications

    167 | Move in from right 168 |
    169 |
    170 |

    Page 2

    171 | Move in from Left 172 |
    173 |
    174 |

    Page 3

    175 | Move in from Top 176 |
    177 |
    178 | 179 |
    180 |
    181 | 182 | 183 | 184 | 185 | 186 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /core/assets/css/add2home.min.css: -------------------------------------------------------------------------------- 1 | .ath-viewport *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ath-viewport{position:relative;z-index:2147483641;pointer-events:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;-o-text-size-adjust:none;text-size-adjust:none}.ath-container,.ath-modal{pointer-events:auto!important}.ath-modal{background:rgba(0,0,0,.6)}.ath-mandatory{background:#000}.ath-container{position:absolute;z-index:2147483641;padding:.7em .6em;width:18em;background:#eee;background-size:100% auto;box-shadow:0 .2em 0 #d1d1d1;font-family:sans-serif;font-size:15px;line-height:1.5em;text-align:center}.ath-action-icon,.ath-container:before{background-position:50%;background-repeat:no-repeat;overflow:hidden}.ath-container small{font-size:.8em;line-height:1.3em;display:block;margin-top:.5em}.ath-ios.ath-phone{bottom:1.8em;left:50%;margin-left:-9em}.ath-ios6.ath-tablet{left:5em;top:1.8em}.ath-ios7.ath-tablet{left:.7em;top:1.8em}.ath-ios10.ath-tablet,.ath-ios8.ath-tablet,.ath-ios9.ath-tablet{right:.4em;top:1.8em}.ath-android{bottom:1.8em;left:50%;margin-left:-9em}.ath-container:before{content:'';position:relative;display:block;float:right;margin:-.7em -.6em 0 .5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAdVBMVEUAAAA5OTkzMzM7Ozs3NzdBQUFAQEA/Pz8+Pj5BQUFAQEA/Pz8+Pj5BQUFAQEA/Pz9BQUE+Pj4/Pz8/Pz8+Pj4/Pz8/Pz8/Pz8+Pj4/Pz8+Pj4/Pz8/Pz8/Pz8/Pz8/Pz8+Pj4/Pz8/Pz8/Pz8/Pz9AQEA/Pz+fdCaPAAAAJnRSTlMACQoNDjM4OTo7PEFCQ0RFS6ytsbS1tru8vcTFxu7x8vX19vf4+C5yomAAAAJESURBVHgBvdzLTsJAGEfxr4C2KBcVkQsIDsK8/yPaqIsPzVlyzrKrX/5p0kkXEz81L23otc9NpIbbWia2YVLqdnhlqFlhGWpSDHe1aopsSIpRb8gK0dC3G30b9rVmhWZIimTICsvQtx/FsuYOrWHoDjX3Gu31gzJxdki934WrAIOsAIOsAIOiAMPhPsJTgKGN0BVsYIVsYIVpYIVpYIVpYIVpYIVpYIVpYIVpYIVlAIVgEBRs8BRs8BRs8BRs8BRs8BRs8BRs8BRTNmgKNngKNngKNngKNngKNhiKGxgiOlZoBlaYBlaYBlaYBlaYBlaYBlaYBlaYBlZIBlBMfQMrVAMr2KAqBENSHFHhGEABhi5CV6gGUKgGUKgGUKgGUFwuqgEUvoEVsoEVpoEUpgEUggF+gKTKY+h1fxSlC7/Z+RrxOQ3fcEoAPPHZBlaYBlaYBlaYBlZYBlYIhvLBCstw7PgM7hkiWOEZWGEaWGEaWGEaIsakEAysmHkGVpxmvoEVqoEVpoEVpoEVpoEVpoEVpoEVkoEVgkFQsEFSsEFQsGEcoSvY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnmbNAUT2c2WAo2eAo2eAo2eAo2eAo2eArNEPFACjZ4CjZ4CjZ4CjaIird/rBvFH6llNCvewdli1URWCIakSIZesUaDoFg36dKFWk9zCZDei3TtwmCj7pC22AwikiIZPEU29IpFNliKxa/hC9DFITjQPYhcAAAAAElFTkSuQmCC);background-color:rgba(255,255,255,.8);background-size:50%;width:2.7em;height:2.7em;text-align:center;color:#a33;z-index:2147483642}.ath-container.ath-icon:before{position:absolute;top:0;right:0;margin:0;float:none}.ath-mandatory .ath-container:before{display:none}.ath-container.ath-android:before{float:left;margin:-.7em .5em 0 -.6em}.ath-container.ath-android.ath-icon:before{position:absolute;right:auto;left:0;margin:0;float:none}.ath-action-icon{display:inline-block;vertical-align:middle;text-indent:-9999em}.ath-ios10 .ath-action-icon,.ath-ios7 .ath-action-icon,.ath-ios8 .ath-action-icon,.ath-ios9 .ath-action-icon{width:1.6em;height:1.6em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAACtCAYAAAB7l7tOAAAF6UlEQVR4AezZWWxUZRiH8VcQEdxZEFFiUZBFUCIa1ABBDARDcCciYGKMqTEGww3SOcNSAwQTjOBiiIpEhRjAhRgXRC8MFxojEhAFZUGttVhaoSxlaW3n8W3yXZxm6vTrOMM5Q98n+V9MMu1pvl++uZhKuypghu49KaaTWGdZSYoVN6VD95nMpLNYZ9XNbdQR2od2k88O3Gm6Bh0t7H0p5Vwp2Ax3ajpu2tYbciFWwkTFO63DY6+JcI4USFaSyYpWp8N7SVZJKR3EinkBk9JxvZFXxhnZSjBaoWp1ZL0ES8WKYXMZp0AndORgy8WKFe5Yf1zvvSBWDEpys2LU6MjD5kmEWQlGKsJRHXlcqUSQVcItEnDEA6gAb7LhjvD9WO6yIEfICQI5A1nzGCYB1T4og5bBiFcyv2f6ujYhl4iVxwKG6qp8MK55HsqPwK0rMr9v/yEo3uCPrJstVh5KMER30Aeh31Ioq0FrHfjXw9CYghnrvYFTuqfEymFzGSwBlT4ARYr7u+K6GLmCVGvAGg2NMG0d/sgJnpScZLjXSkC5z8H3eQ72/k24Q8NfzvwFyK4qtuJSZKaubRPyE/K/Mtx+EvCHL+7uasId1t10w0scz/RzSzYzAfgKV30D3LPaG7lRkR8RK4tKKJKAMp+D7r0EfmmOe0x3m2itAc/ZxBjgAt1mXHWKPPkdb+QGSTJdrDaU5EoJ2OtzwD0WwY7KNNzbRfMFFg24WPdtGHnS221Cflgsj56hjwTs8TnY7oq7/QDhjutGicsb2AVcovsO18l6uPPNNiE/JFaGAq7Q7fY50G4LYVtz3FrdaNGyBXbIl+q24DqhyHes9EaulwR3SwtZs+ktAT/7HORliru1gnCndONFyx44Dfn7MPLYN7yR6yTJZAllJeguAT/4HOBFz8I3ZWm4E0TLFbBD7qn7EVdtHYx53R9ZN0ksrZRuErDN5+AuLIWvm+Oe1k0ULdfADrmX7idcR0/DyBXeyCdlLuMMOGCBz4F1ng+f7yFcve5e0fIFHELeiav6BAx70Rt5p0yhY3u/wR0kyarW/uX35b403PtFyzewQ75ctwtXzSkY8WqruHslSV8RscrL6TJ1bcvfWJ0/HzbtIdw/ugdFyzdwOOAq3T6fmzxwGQ3vbmO8iFioIWqYSsHMj9M/ljfuTsOdItoZBXYBfXX7cVXVwvXLm/8+fU3lcdCqdEMNGBbgUmRmfQISQKd5sGEn4VK6YtEiAXYBA3QVuA4q8hCHrDcafR1ul65jewfuovsCl7vJrNlOuEbdo6JFCuwCrtb9hqusBu56Cw4cI1y1briIWEBn3Ue0XKPuMdGiBg4H9NdV0HJ/6QZLOEPmPN0GmpfSPS5arIBdwHUtIFfoBsl/ZsgfhHCfFi2WwC5goO4AmvanbqBkzJA76tboZokWa2AXMEi3RTdAvDLkDqJFAhzB32xFD2wZsGXA0WfAlgFbBmwZsGXAlgFbBpzk04JaKb0iA9ZnF9x5SQAFtRKKIgPWZxfaeRmwAZ/BGbAB37eaG6MCbnq2Aed5czYyKirgpmcbsAHHZAZswN0Wwo7KeG1fFf2jAm56dtzOQ42yB+65mDhWFBUwUETMUiMDNmADbp/APRaTAh6I2bpGCNw1bufRZJQ1cPdF/NueHZsgDEBBGLbMGoIu4AZu5gLOZeEaYmEXeznF3jRPyEv4frgJvvJe3qTefY0AAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwb8rwADBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgz4/sz1Nia/9hizA7zgklwy3RYwYMBzBRjw4bPjxAbAAizAAtwgwAIswAIswAIMGDBgARZgARZgAS4FWIAFWIAFWIABAwYswAIswAIswIUAC7AAC7AACzBgwIAFWIAFWIAFuBBgARZgARZgAQYMGPApQ99ZCdgWtzqwATbABtgAG2DbnxNb7zbRimsMLMACrDf2wMWI/WasfQAAAABJRU5ErkJggg==);margin-top:-.3em;background-size:auto 100%}.ath-ios6 .ath-action-icon{width:1.8em;height:1.8em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAB0CAQAAADAmnOnAAAAAnNCSVQICFXsRgQAAAAJcEhZcwAAWwEAAFsBAXkZiFwAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAF4klEQVR4Ae3a/a+XdR3H8ec5HM45HDmKICoVohkZsxESRRCzcZM/2JKkdGR5MrSkleA0Pd00O4u5IVuNM2yYc6XSzCExU4oUNRPCJFdMUAhsYZpUGhscOHA4N8/WZzsL6HBxvofvdV3fa3yer//gsV3vH659KHzncBsJxUYhDzOEhCKQbORs+ip2wzgM+wvj+P9i35qAGLaHGcQSgKSTrxBLABJppZpYApCspoFYApBsZjSxBCD5OxOJJQBJG1cQSwCSLpqJJQCJ3MvgCGTinuSMCJS8LZwfgZL3FtMiUPIOcU0ESl4PLRHoRPsJtREoeRsYGYGS9yrvo6RmpbLaigWSfzOdErLs6+bLUMFA0sF1+QF1cz1UNlBYK9V5AHXyWSgEkKyiIWOgGh829Ki1lLcaxjCVK7mJRSxjBY+zgRf/u9pXcMB7jhEZAg32EUP3O6hMKOP5Iq2sZQeHMZXt5KKMgOpcY+iHVnFyjeQKlrCBdsxge5ieAVC9vzLUelI8H+A7bKIHM10H81IGGuKvDf1ggDxVTKOV1zG3/Yia1ICG+ltD32MgNTKfP2HuW0VDKkCNrjfUTOm9i6XswwrZJkaVHeh0f2fodkrtfO6jAytqrzG+rEDDfVG1x1sprZEs5RBW4PZxeT+Bbrf5hPu9arfzKaU6WjiAFbseWvoF1GW/6vYGSmkyW7Dit4xB5QHq9Br6Xx2t9GAhtp6zkoHsfNp1J9wX6H+jeR4LtJc4LxGopZZyNpN/YcG2mw9nBTSPLizgOmjKAujGgvJID3ekD7QYi7nGzkvmQtpA38Vi7iJf0TedlC7QTVjMfcY2QyvSBPpUMW/PIBfbo9pls1XpAX2EdizeznStob3OJpQO0DB2YfE21q2GtnghpAm0Gou3T9tm6BGHQppA12HRVt17eboNlydNoLHsx2JtmL801OYcQmkC/QKLtQt9ydBW3wNpA30ci7Ur3WdolUMhbaBqNhf/8qQJ9Hkszs5wjaH9XkUobaAqtmFRdoGbDb3sWMgG6DIs5852knO82RaXer+P+qyb3eWeo7ZNBrRZvm1otY2QFdBjeHIb6hTne49Put12+9ObMoDdYmfy5UkF6AK6cCCr9aM2u9IddptcOYCG+FNDB5xLKCugO7G01TndFp/xgAntdYvrfdwVLnORt3q9Vx25F27DUjbGPxr6qxMgW6Cd2N+d6wLXedA+6nKbK73Lr/pJxzusvE/wZrvX0FOOgGyBxmF/dprXutYOj6nNdS6xyYnWp/dGcaGdhr5vDWQN9E1MXrUzfcA2j2qPj/l1J1uT9iPOeh8w1O7nCGUN9HzyGZ7ndo9qp0ucanU2r1xH+wdDu5wIeQDVVx0+/kd1i697RNv8thdn+Qz4Uv9p6DeOhHyApmBfq3OBu+3Nfd7nVELZAX3Nw4ZarYG8gG7GY1dlk6/Zm3/2Rk8jlB1QvT82dNAmQjkBVf8Mj957fdrefM7ZVhPKEuidvmDob06CXIGGbsX/bZDf8KAhfdbJhLIGmuZuQ084HHIGatiLvRvrRkP6qldbBXkAzbfD0N0OhryBGqrEMOd50FC7d1hPKGugBh8ydMh5hPIGGouI1d5lj6F1vptQ9kDvcKOhN5wMlQH0QcRGnzC03yZCeQDN9G1D6xwBFQI07FI8x02GdjgB8gJqttPQcmuhYoAumzvG7YZWejrkA1TrPYYO+SVCFQO0aM4bqj0uJJQH0LluSP7PkyeQU9QOmyAvoBm+Zegpz4LKA/qYB/wE5AXUe3m81zqoRKAPOYWcuvP9dxvqcD6h7IAKkaNU3eUlHLcI9EzS5YlAi62h/zUy89QCqqKUmvgHywsJlEHnsQYxAvXVIJo5gIhnPhiBju1iNmLvLn85Ah1ZPYs5jBGo72awEzEC9dVwHqQHI9DxWoAYgSLQQKteGIESu/qhCJTYtT+PQBEoAkWgCBSBkotAEehUWwSKQBEoAkWg/BeBIlAEikARKAJFoFmealu4gVLy1Gt5dkARKAL9BzujPSurTmu/AAAAAElFTkSuQmCC);margin-bottom:.4em;background-size:100% auto}.ath-android .ath-action-icon{width:1.4em;height:1.5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVmZmb///9mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZW6fJrAAAAEXRSTlMAAAYHG21ub8fLz9DR8/T4+RrZ9owAAAB3SURBVHja7dNLDoAgDATQWv4gKve/rEajJOJiWLgg6WzpSyB0aHqHiNj6nL1lovb4C+hYzkSNAT7mryQFAVOeGAj4CjwEtgrWXpD/uZKtwEJApXt+Vn0flzRhgNiFZQkOXY0aADQZCOCPlsZJ46Rx0jhp3IiN2wGDHhxtldrlwQAAAABJRU5ErkJggg==);background-size:100% auto}.ath-container p{margin:0;padding:0;position:relative;z-index:2147483642;text-shadow:0 .1em 0 #fff;font-size:1.1em}.ath-ios.ath-phone:after,.ath-ios.ath-tablet:after{content:'';background:#eee;position:absolute;width:2em;height:2em;left:50%;margin-left:-1em}.ath-ios.ath-phone:after{bottom:-.9em;-webkit-transform:scaleX(.9) rotate(45deg);transform:scaleX(.9) rotate(45deg);box-shadow:.2em .2em 0 #d1d1d1}.ath-ios.ath-tablet:after{top:-.9em;-webkit-transform:scaleX(.9) rotate(45deg);transform:scaleX(.9) rotate(45deg);z-index:2147483641}.ath-application-icon{position:relative;padding:0;border:0;margin:0 auto .2em;height:6em;width:6em;z-index:2147483642}.ath-container.ath-ios .ath-application-icon{border-radius:1em;box-shadow:0 .2em .4em rgba(0,0,0,.3),inset 0 .07em 0 rgba(255,255,255,.5);margin:0 auto .4em}@media only screen and (orientation:landscape){.ath-container.ath-phone{width:24em}.ath-android.ath-phone,.ath-ios.ath-phone{margin-left:-12em}.ath-ios6:after{left:39%}.ath-ios8.ath-phone{left:auto;bottom:auto;right:.4em;top:1.8em}.ath-ios8.ath-phone:after{bottom:auto;top:-.9em;left:68%;z-index:2147483641;box-shadow:none}} -------------------------------------------------------------------------------- /core/assets/js/fastclick.min.js: -------------------------------------------------------------------------------- 1 | /** Shrinkwrap URL: 2 | * /v2/bundles/js?modules=fastclick%401.0.6%2Co-autoinit%401.2.1&shrinkwrap= 3 | */ 4 | !function(t){function e(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return t[o].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";n(1),window.Origami={fastclick:n(2),"o-autoinit":n(4)}},function(t,e){t.exports={name:"__MAIN__",dependencies:{fastclick:"fastclick#*","o-autoinit":"o-autoinit#^1.0.0"}}},function(t,e,n){t.exports=n(3)},function(t,e){"use strict";var n=!1;!function(){/** 5 | * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. 6 | * 7 | * @codingstandard ftlabs-jsv2 8 | * @copyright The Financial Times Limited [All Rights Reserved] 9 | * @license MIT License (see LICENSE.txt) 10 | */ 11 | function e(t,n){function o(t,e){return function(){return t.apply(e,arguments)}}var r;if(n=n||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=n.touchBoundary||10,this.layer=t,this.tapDelay=n.tapDelay||200,this.tapTimeout=n.tapTimeout||700,!e.notNeeded(t)){for(var a=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],c=this,s=0,u=a.length;s=0,i=navigator.userAgent.indexOf("Android")>0&&!o,r=/iP(ad|hone|od)/.test(navigator.userAgent)&&!o,a=r&&/OS 4_\d(_\d)?/.test(navigator.userAgent),c=r&&/OS [6-7]_\d/.test(navigator.userAgent),s=navigator.userAgent.indexOf("BB10")>0;e.prototype.needsClick=function(t){switch(t.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(t.disabled)return!0;break;case"input":if(r&&"file"===t.type||t.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(t.className)},e.prototype.needsFocus=function(t){switch(t.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!i;case"input":switch(t.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!t.disabled&&!t.readOnly;default:return/\bneedsfocus\b/.test(t.className)}},e.prototype.sendClick=function(t,e){var n,o;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),o=e.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(t),!0,!0,window,1,o.screenX,o.screenY,o.clientX,o.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,t.dispatchEvent(n)},e.prototype.determineEventType=function(t){return i&&"select"===t.tagName.toLowerCase()?"mousedown":"click"},e.prototype.focus=function(t){var e;r&&t.setSelectionRange&&0!==t.type.indexOf("date")&&"time"!==t.type&&"month"!==t.type?(e=t.value.length,t.setSelectionRange(e,e)):t.focus()},e.prototype.updateScrollParent=function(t){var e,n;if(e=t.fastClickScrollParent,!e||!e.contains(t)){n=t;do{if(n.scrollHeight>n.offsetHeight){e=n,t.fastClickScrollParent=n;break}n=n.parentElement}while(n)}e&&(e.fastClickLastScrollTop=e.scrollTop)},e.prototype.getTargetElementFromEventTarget=function(t){return t.nodeType===Node.TEXT_NODE?t.parentNode:t},e.prototype.onTouchStart=function(t){var e,n,o;if(t.targetTouches.length>1)return!0;if(e=this.getTargetElementFromEventTarget(t.target),n=t.targetTouches[0],r){if(o=window.getSelection(),o.rangeCount&&!o.isCollapsed)return!0;if(!a){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return t.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(e)}}return this.trackingClick=!0,this.trackingClickStart=t.timeStamp,this.targetElement=e,this.touchStartX=n.pageX,this.touchStartY=n.pageY,t.timeStamp-this.lastClickTimen||Math.abs(e.pageY-this.touchStartY)>n},e.prototype.onTouchMove=function(t){return!this.trackingClick||((this.targetElement!==this.getTargetElementFromEventTarget(t.target)||this.touchHasMoved(t))&&(this.trackingClick=!1,this.targetElement=null),!0)},e.prototype.findControl=function(t){return void 0!==t.control?t.control:t.htmlFor?document.getElementById(t.htmlFor):t.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},e.prototype.onTouchEnd=function(t){var e,n,o,s,u,l=this.targetElement;if(!this.trackingClick)return!0;if(t.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=t.timeStamp,n=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,c&&(u=t.changedTouches[0],l=document.elementFromPoint(u.pageX-window.pageXOffset,u.pageY-window.pageYOffset)||l,l.fastClickScrollParent=this.targetElement.fastClickScrollParent),o=l.tagName.toLowerCase(),"label"===o){if(e=this.findControl(l)){if(this.focus(l),i)return!1;l=e}}else if(this.needsFocus(l))return t.timeStamp-n>100||r&&window.top!==window&&"input"===o?(this.targetElement=null,!1):(this.focus(l),this.sendClick(l,t),r&&"select"===o||(this.targetElement=null,t.preventDefault()),!1);return!(!r||a||(s=l.fastClickScrollParent,!s||s.fastClickLastScrollTop===s.scrollTop))||(this.needsClick(l)||(t.preventDefault(),this.sendClick(l,t)),!1)},e.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},e.prototype.onMouse=function(t){return!this.targetElement||(!!t.forwardedTouchEvent||(!t.cancelable||(!(!this.needsClick(this.targetElement)||this.cancelNextClick)||(t.stopImmediatePropagation?t.stopImmediatePropagation():t.propagationStopped=!0,t.stopPropagation(),t.preventDefault(),!1))))},e.prototype.onClick=function(t){var e;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===t.target.type&&0===t.detail||(e=this.onMouse(t),e||(this.targetElement=null),e)},e.prototype.destroy=function(){var t=this.layer;i&&(t.removeEventListener("mouseover",this.onMouse,!0),t.removeEventListener("mousedown",this.onMouse,!0),t.removeEventListener("mouseup",this.onMouse,!0)),t.removeEventListener("click",this.onClick,!0),t.removeEventListener("touchstart",this.onTouchStart,!1),t.removeEventListener("touchmove",this.onTouchMove,!1),t.removeEventListener("touchend",this.onTouchEnd,!1),t.removeEventListener("touchcancel",this.onTouchCancel,!1)},e.notNeeded=function(t){var e,n,o,r;if("undefined"==typeof window.ontouchstart)return!0;if(n=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!i)return!0;if(e=document.querySelector("meta[name=viewport]")){if(e.content.indexOf("user-scalable=no")!==-1)return!0;if(n>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(s&&(o=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),o[1]>=10&&o[2]>=3&&(e=document.querySelector("meta[name=viewport]")))){if(e.content.indexOf("user-scalable=no")!==-1)return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===t.style.msTouchAction||"manipulation"===t.style.touchAction||(r=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],!!(r>=27&&(e=document.querySelector("meta[name=viewport]"),e&&(e.content.indexOf("user-scalable=no")!==-1||document.documentElement.scrollWidth<=window.outerWidth)))||("none"===t.style.touchAction||"manipulation"===t.style.touchAction))},e.attach=function(t,n){return new e(t,n)},"function"==typeof n&&"object"==typeof n.amd&&n.amd?n(function(){return e}):"undefined"!=typeof t&&t.exports?(t.exports=e.attach,t.exports.FastClick=e):window.FastClick=e}()},function(t,e,n){t.exports=n(5)},function(t,e){"use strict";function n(t){t in o||(o[t]=!0,document.dispatchEvent(new CustomEvent("o."+t)))}var o={};window.addEventListener("load",n.bind(null,"load")),window.addEventListener("load",n.bind(null,"DOMContentLoaded")),document.addEventListener("DOMContentLoaded",n.bind(null,"DOMContentLoaded")),document.onreadystatechange=function(){"complete"===document.readyState?(n("DOMContentLoaded"),n("load")):"interactive"!==document.readyState||document.attachEvent||n("DOMContentLoaded")},"complete"===document.readyState?(n("DOMContentLoaded"),n("load")):"interactive"!==document.readyState||document.attachEvent||n("DOMContentLoaded"),document.attachEvent&&!function(){var t=!1,e=50;try{t=null===window.frameElement&&document.documentElement}catch(t){}t&&t.doScroll&&!function i(){if(!("DOMContentLoaded"in o)){try{t.doScroll("left")}catch(t){return e<5e3?setTimeout(i,e*=1.2):void 0}n("DOMContentLoaded")}}()}()}]); -------------------------------------------------------------------------------- /google.php: -------------------------------------------------------------------------------- 1 | $value) { 29 | $apiurl .= "&" . $key . "=" . $value; 30 | } 31 | 32 | $json = file_get_contents($apiurl); 33 | 34 | $data = json_decode($json, TRUE); 35 | foreach ($data['items'] as $key => $item) { 36 | foreach ($urls as $urlkey => $val) { 37 | $pattern = preg_quote($val,"|"); 38 | preg_match("|".$pattern."|", $item['link'],$matches); 39 | if(!empty($matches)){ 40 | $data['items'][$key]['link'] = $replacements[$urlkey]; 41 | } 42 | } 43 | } 44 | } 45 | ?> 46 | 47 | 48 | <?php echo $application . " - " . $brand ;?> 49 | 54 | 55 | 56 | 60 | 61 | 62 | 64 |
    65 |
    66 | 67 |



    68 |

    69 |
    70 |
    71 | 72 |     73 | 74 |
    75 |
    76 |   77 |
    78 |
    79 | 81 |
    82 |
    83 |
    84 | 85 |
    86 |
    87 |
    88 |
    89 | 90 | 91 | 92 | 93 | 94 |
    95 |
    96 |
    97 |
    98 |
    99 |
    100 |
    Ungefähr Ergebnisse ( Sekunden) 
    101 | $res) { ?> 102 |
    103 |
    104 |
    105 | 106 |
    107 | 108 | 109 | 110 | 111 | 112 | 118 | 121 | 125 | 126 | 132 | 138 | 141 | 145 | 146 | 152 | 156 | 162 | 163 | 164 | 165 | 166 |
    167 |
    168 | 169 | 171 | 172 | 173 | 174 | 175 | 176 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | -------------------------------------------------------------------------------- /core/assets/js/bootstrap-switch.min.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * bootstrap-switch - v3.0.2 3 | * http://www.bootstrap-switch.org 4 | * ======================================================================== 5 | * Copyright 2012-2013 Mattia Larentis 6 | * 7 | * ======================================================================== 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * ======================================================================== 20 | */ 21 | 22 | (function(){var t=[].slice;!function(e,s){"use strict";var o;return o=function(){function t(t,s){null==s&&(s={}),this.$element=e(t),this.options=e.extend({},e.fn.bootstrapSwitch.defaults,{state:this.$element.is(":checked"),size:this.$element.data("size"),animate:this.$element.data("animate"),disabled:this.$element.is(":disabled"),readonly:this.$element.is("[readonly]"),indeterminate:this.$element.data("indeterminate"),onColor:this.$element.data("on-color"),offColor:this.$element.data("off-color"),onText:this.$element.data("on-text"),offText:this.$element.data("off-text"),labelText:this.$element.data("label-text"),baseClass:this.$element.data("base-class"),wrapperClass:this.$element.data("wrapper-class"),radioAllOff:this.$element.data("radio-all-off")},s),this.$wrapper=e("
    ",{"class":function(t){return function(){var e;return e=[""+t.options.baseClass].concat(t._getClasses(t.options.wrapperClass)),e.push(t.options.state?""+t.options.baseClass+"-on":""+t.options.baseClass+"-off"),null!=t.options.size&&e.push(""+t.options.baseClass+"-"+t.options.size),t.options.animate&&e.push(""+t.options.baseClass+"-animate"),t.options.disabled&&e.push(""+t.options.baseClass+"-disabled"),t.options.readonly&&e.push(""+t.options.baseClass+"-readonly"),t.options.indeterminate&&e.push(""+t.options.baseClass+"-indeterminate"),t.$element.attr("id")&&e.push(""+t.options.baseClass+"-id-"+t.$element.attr("id")),e.join(" ")}}(this)()}),this.$container=e("
    ",{"class":""+this.options.baseClass+"-container"}),this.$on=e("",{html:this.options.onText,"class":""+this.options.baseClass+"-handle-on "+this.options.baseClass+"-"+this.options.onColor}),this.$off=e("",{html:this.options.offText,"class":""+this.options.baseClass+"-handle-off "+this.options.baseClass+"-"+this.options.offColor}),this.$label=e("