aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/AdminTools/template
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2014-06-13 19:53:56 +0000
committermistic100 <mistic@piwigo.org>2014-06-13 19:53:56 +0000
commit0018bcd9f5ed3e86edfa83b389a8f2e42cf4101e (patch)
treefdf2b5d26b0db04856c4ed590f9954b2ddcd2b55 /plugins/AdminTools/template
parent715f13b123c799eb5dae73147278a6e67fb1d8ea (diff)
add AdminTools to trunk
git-svn-id: http://piwigo.org/svn/trunk@28694 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'plugins/AdminTools/template')
-rw-r--r--plugins/AdminTools/template/admin.tpl60
-rw-r--r--plugins/AdminTools/template/fontello/LICENSE.txt39
-rw-r--r--plugins/AdminTools/template/fontello/README.txt75
-rw-r--r--plugins/AdminTools/template/fontello/config.json40
-rw-r--r--plugins/AdminTools/template/fontello/css/animation.css85
-rw-r--r--plugins/AdminTools/template/fontello/css/fontello-ato-codes.css6
-rw-r--r--plugins/AdminTools/template/fontello/css/fontello-ato-embedded.css59
-rw-r--r--plugins/AdminTools/template/fontello/css/fontello-ato-ie7-codes.css6
-rw-r--r--plugins/AdminTools/template/fontello/css/fontello-ato-ie7.css17
-rw-r--r--plugins/AdminTools/template/fontello/css/fontello-ato.css57
-rw-r--r--plugins/AdminTools/template/fontello/demo.html275
-rw-r--r--plugins/AdminTools/template/fontello/font/fontello-ato.eotbin0 -> 5248 bytes
-rw-r--r--plugins/AdminTools/template/fontello/font/fontello-ato.svg16
-rw-r--r--plugins/AdminTools/template/fontello/font/fontello-ato.ttfbin0 -> 5064 bytes
-rw-r--r--plugins/AdminTools/template/fontello/font/fontello-ato.woffbin0 -> 3148 bytes
-rw-r--r--plugins/AdminTools/template/index.php7
-rw-r--r--plugins/AdminTools/template/public_controller.js319
-rw-r--r--plugins/AdminTools/template/public_controller.tpl188
-rw-r--r--plugins/AdminTools/template/style.css251
19 files changed, 1500 insertions, 0 deletions
diff --git a/plugins/AdminTools/template/admin.tpl b/plugins/AdminTools/template/admin.tpl
new file mode 100644
index 000000000..b82b3fd24
--- /dev/null
+++ b/plugins/AdminTools/template/admin.tpl
@@ -0,0 +1,60 @@
+{html_style}
+.graphicalCheckbox {
+ font-size:16px;
+ line-height:16px;
+}
+
+.graphicalCheckbox + input {
+ display:none;
+}
+{/html_style}
+
+{footer_script}
+jQuery('#ato-config input[type=checkbox]').change(function() {
+ jQuery(this).prev().toggleClass('icon-check icon-check-empty');
+});
+jQuery('#ato-config input[type=radio]').change(function() {
+ jQuery('#ato-config input[type=radio][name='+ $(this).attr('name') +']').prev().toggleClass('icon-check icon-check-empty');
+});
+{/footer_script}
+
+<div class="titrePage">
+ <h2>Admin Tools</h2>
+</div>
+
+<form method="post" action="" class="properties" id="ato-config">
+<fieldset>
+ <legend>{'Configuration'|translate}</legend>
+ <ul>
+ <li>
+ <label>
+ <span class="graphicalCheckbox icon-check{if not $AdminTools.default_open}-empty{/if}"></span>
+ <input type="checkbox" name="default_open"{if $AdminTools.default_open} checked="checked"{/if}>
+ <b>{'Open toolbar by default'|translate}</b>
+ </label>
+ </li>
+ <li>
+ <label>
+ <span class="graphicalCheckbox icon-check{if not $AdminTools.public_quick_edit}-empty{/if}"></span>
+ <input type="checkbox" name="public_quick_edit"{if $AdminTools.public_quick_edit} checked="checked"{/if}>
+ <b>{'Give access to quick edit to photo owners even if they are not admin'|translate}</b>
+ </label>
+ </li>
+ <li>
+ <b>{'Closed icon position'|translate} :</b>
+ <label>
+ <span class="graphicalCheckbox icon-check{if $AdminTools.closed_position!='left'}-empty{/if}"></span>
+ <input type="radio" name="closed_position" value="left"{if $AdminTools.closed_position=='left'} checked="checked"{/if}>
+ {'left'|translate}
+ </label>
+ <label>
+ <span class="graphicalCheckbox icon-check{if $AdminTools.closed_position!='right'}-empty{/if}"></span>
+ <input type="radio" name="closed_position" value="right"{if $AdminTools.closed_position=='right'} checked="checked"{/if}>
+ {'right'|translate}
+ </label>
+ </li>
+ </ul>
+</fieldset>
+
+<p class="formButtons"><input type="submit" name="save_config" value="{'Save Settings'|translate}"></p>
+</form> \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/LICENSE.txt b/plugins/AdminTools/template/fontello/LICENSE.txt
new file mode 100644
index 000000000..4b7ab412b
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/LICENSE.txt
@@ -0,0 +1,39 @@
+Font license info
+
+
+## Font Awesome
+
+ Copyright (C) 2012 by Dave Gandy
+
+ Author: Dave Gandy
+ License: SIL ()
+ Homepage: http://fortawesome.github.com/Font-Awesome/
+
+
+## Entypo
+
+ Copyright (C) 2012 by Daniel Bruce
+
+ Author: Daniel Bruce
+ License: CC BY-SA (http://creativecommons.org/licenses/by-sa/2.0/)
+ Homepage: http://www.entypo.com
+
+
+## Iconic
+
+ Copyright (C) 2012 by P.J. Onori
+
+ Author: P.J. Onori
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://somerandomdude.com/work/iconic/
+
+
+## MFG Labs
+
+ Copyright (C) 2012 by Daniel Bruce
+
+ Author: MFG Labs
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://www.mfglabs.com/
+
+
diff --git a/plugins/AdminTools/template/fontello/README.txt b/plugins/AdminTools/template/fontello/README.txt
new file mode 100644
index 000000000..43e23f283
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/README.txt
@@ -0,0 +1,75 @@
+This webfont is generated by http://fontello.com open source project.
+
+
+================================================================================
+Please, note, that you should obey original font licences, used to make this
+webfont pack. Details available in LICENSE.txt file.
+
+- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
+ site in "About" section.
+
+- If your project is open-source, usually, it will be ok to make LICENSE.txt
+ file publically available in your repository.
+
+- Fonts, used in Fontello, don't require to make clickable links on your site.
+ But any kind of additional authors crediting is welcome.
+================================================================================
+
+
+Comments on archive content
+---------------------------
+
+- /font/* - fonts in different formats
+
+- /css/* - different kinds of css, for all situations. Should be ok with
+ twitter bootstrap. Also, you can skip <i> style and assign icon classes
+ directly to text elements, if you don't mind about IE7.
+
+- demo.html - demo file, to show your webfont content
+
+- LICENSE.txt - license info about source fonts, used to build your one.
+
+- config.json - keeps your settings. You can import it back to fontello anytime,
+ to continue your work
+
+
+Why so many CSS files ?
+-----------------------
+
+Because we like to fit all your needs :)
+
+- basic file, <your_font_name>.css - is usually enougth, in contains @font-face
+ and character codes definition
+
+- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
+ directly into html
+
+- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
+ rules, but still wish to benefit of css generation. That can be very
+ convenient for automated assets build systems. When you need to update font -
+ no needs to manually edit files, just override old version with archive
+ content. See fontello source codes for example.
+
+- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
+ CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
+ We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
+ server headers. But if you ok with dirty hack - this file is for you. Note,
+ that data url moved to separate @font-face to avoid problems with <IE9, when
+ string is too long.
+
+- animate.css - use it to get ideas about spinner rotation animation.
+
+
+Attention for server setup
+--------------------------
+
+You MUST setup server to reply with proper `mime-types` for font files. In other
+case, some browsers will fail to show fonts.
+
+Usually, `apache` already has necessary settings, but `nginx` and other
+webservers should be tuned. Here is list of mime types for our file extentions:
+
+- `application/vnd.ms-fontobject` - eot
+- `application/x-font-woff` - woff
+- `application/x-font-ttf` - ttf
+- `image/svg+xml` - svg
diff --git a/plugins/AdminTools/template/fontello/config.json b/plugins/AdminTools/template/fontello/config.json
new file mode 100644
index 000000000..5beaa1e68
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/config.json
@@ -0,0 +1,40 @@
+{
+ "name": "fontello-ato",
+ "css_prefix_text": "icon-ato-",
+ "css_use_suffix": false,
+ "hinting": true,
+ "units_per_em": 1000,
+ "ascent": 850,
+ "glyphs": [
+ {
+ "uid": "c08a1cde48d96cba21d8c05fa7d7feb1",
+ "css": "doc-text-inv",
+ "code": 59392,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "3212f42c65d41ed91cb435d0490e29ed",
+ "css": "flash",
+ "code": 59393,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "978aa8facd816df874039e139cb0cdde",
+ "css": "trophy",
+ "code": 59395,
+ "src": "entypo"
+ },
+ {
+ "uid": "11e664deed5b2587456a4f9c01d720b6",
+ "css": "cancel",
+ "code": 59397,
+ "src": "iconic"
+ },
+ {
+ "uid": "ce50292e85eb5d6ee3be61b32bf2bdf3",
+ "css": "ok",
+ "code": 59394,
+ "src": "mfglabs"
+ }
+ ]
+} \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/css/animation.css b/plugins/AdminTools/template/fontello/css/animation.css
new file mode 100644
index 000000000..ac5a9562f
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/animation.css
@@ -0,0 +1,85 @@
+/*
+ Animation example, for spinners
+*/
+.animate-spin {
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ -webkit-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+ display: inline-block;
+}
+@-moz-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-webkit-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-o-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-ms-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
diff --git a/plugins/AdminTools/template/fontello/css/fontello-ato-codes.css b/plugins/AdminTools/template/fontello/css/fontello-ato-codes.css
new file mode 100644
index 000000000..1260f0d4d
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/fontello-ato-codes.css
@@ -0,0 +1,6 @@
+
+.icon-ato-doc-text-inv:before { content: '\e800'; } /* '' */
+.icon-ato-flash:before { content: '\e801'; } /* '' */
+.icon-ato-trophy:before { content: '\e803'; } /* '' */
+.icon-ato-cancel:before { content: '\e805'; } /* '' */
+.icon-ato-ok:before { content: '\e802'; } /* '' */ \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/css/fontello-ato-embedded.css b/plugins/AdminTools/template/fontello/css/fontello-ato-embedded.css
new file mode 100644
index 000000000..ca5ee63e6
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/fontello-ato-embedded.css
@@ -0,0 +1,59 @@
+@font-face {
+ font-family: 'fontello-ato';
+ src: url('../font/fontello-ato.eot?11995162');
+ src: url('../font/fontello-ato.eot?11995162#iefix') format('embedded-opentype'),
+ url('../font/fontello-ato.svg?11995162#fontello-ato') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'fontello-ato';
+ src: url('data:application/octet-stream;base64,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') format('woff'),
+ url('data:application/octet-stream;base64,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') format('truetype');
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'fontello-ato';
+ src: url('../font/fontello-ato.svg?11995162#fontello-ato') format('svg');
+ }
+}
+*/
+
+ [class^="icon-ato-"]:before, [class*=" icon-ato-"]:before {
+ font-family: "fontello-ato";
+ font-style: normal;
+ font-weight: normal;
+ speak: none;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: .2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: .2em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+.icon-ato-doc-text-inv:before { content: '\e800'; } /* '' */
+.icon-ato-flash:before { content: '\e801'; } /* '' */
+.icon-ato-trophy:before { content: '\e803'; } /* '' */
+.icon-ato-cancel:before { content: '\e805'; } /* '' */
+.icon-ato-ok:before { content: '\e802'; } /* '' */ \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/css/fontello-ato-ie7-codes.css b/plugins/AdminTools/template/fontello/css/fontello-ato-ie7-codes.css
new file mode 100644
index 000000000..56bcbda11
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/fontello-ato-ie7-codes.css
@@ -0,0 +1,6 @@
+
+.icon-ato-doc-text-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-ato-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-ato-trophy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-ato-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-ato-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); } \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/css/fontello-ato-ie7.css b/plugins/AdminTools/template/fontello/css/fontello-ato-ie7.css
new file mode 100644
index 000000000..b77967ca6
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/fontello-ato-ie7.css
@@ -0,0 +1,17 @@
+[class^="icon-ato-"], [class*=" icon-ato-"] {
+ font-family: 'fontello-ato';
+ font-style: normal;
+ font-weight: normal;
+
+ /* fix buttons height */
+ line-height: 1em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+}
+
+.icon-ato-doc-text-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-ato-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-ato-trophy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-ato-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-ato-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); } \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/css/fontello-ato.css b/plugins/AdminTools/template/fontello/css/fontello-ato.css
new file mode 100644
index 000000000..31cb55605
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/css/fontello-ato.css
@@ -0,0 +1,57 @@
+@font-face {
+ font-family: 'fontello-ato';
+ src: url('../font/fontello-ato.eot?10884929');
+ src: url('../font/fontello-ato.eot?10884929#iefix') format('embedded-opentype'),
+ url('../font/fontello-ato.woff?10884929') format('woff'),
+ url('../font/fontello-ato.ttf?10884929') format('truetype'),
+ url('../font/fontello-ato.svg?10884929#fontello-ato') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'fontello-ato';
+ src: url('../font/fontello-ato.svg?10884929#fontello-ato') format('svg');
+ }
+}
+*/
+
+ [class^="icon-ato-"]:before, [class*=" icon-ato-"]:before {
+ font-family: "fontello-ato";
+ font-style: normal;
+ font-weight: normal;
+ speak: none;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: .2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: .2em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+
+.icon-ato-doc-text-inv:before { content: '\e800'; } /* '' */
+.icon-ato-flash:before { content: '\e801'; } /* '' */
+.icon-ato-trophy:before { content: '\e803'; } /* '' */
+.icon-ato-cancel:before { content: '\e805'; } /* '' */
+.icon-ato-ok:before { content: '\e802'; } /* '' */ \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/demo.html b/plugins/AdminTools/template/fontello/demo.html
new file mode 100644
index 000000000..73ceeeb67
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/demo.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+ <meta charset="UTF-8"><style type="text/css">/*
+ * Bootstrap v2.2.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix {
+ *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.clearfix:after {
+ clear: both;
+}
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+a:hover,
+a:active {
+ outline: 0;
+}
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+button,
+input {
+ *overflow: visible;
+ line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333;
+ background-color: #fff;
+}
+a {
+ color: #08c;
+ text-decoration: none;
+}
+a:hover {
+ color: #005580;
+ text-decoration: underline;
+}
+.row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+.row:before,
+.row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.row:after {
+ clear: both;
+}
+[class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+.span12 {
+ width: 940px;
+}
+.span11 {
+ width: 860px;
+}
+.span10 {
+ width: 780px;
+}
+.span9 {
+ width: 700px;
+}
+.span8 {
+ width: 620px;
+}
+.span7 {
+ width: 540px;
+}
+.span6 {
+ width: 460px;
+}
+.span5 {
+ width: 380px;
+}
+.span4 {
+ width: 300px;
+}
+.span3 {
+ width: 220px;
+}
+.span2 {
+ width: 140px;
+}
+.span1 {
+ width: 60px;
+}
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+ float: right;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+}
+.container:before,
+.container:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.container:after {
+ clear: both;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
+}
+small {
+ font-size: 85%;
+}
+h1 {
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 20px;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+h1 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999;
+}
+h1 {
+ line-height: 40px;
+}
+h1 {
+ font-size: 38.5px;
+}
+h1 small {
+ font-size: 24.5px;
+}
+body {
+ margin-top: 90px;
+}
+.header {
+ position: fixed;
+ top: 0;
+ left: 50%;
+ margin-left: -480px;
+ background-color: #fff;
+ border-bottom: 1px solid #ddd;
+ padding-top: 10px;
+ z-index: 10;
+}
+.footer {
+ color: #ddd;
+ font-size: 12px;
+ text-align: center;
+ margin-top: 20px;
+}
+.footer a {
+ color: #ccc;
+ text-decoration: underline;
+}
+.the-icons {
+ font-size: 14px;
+ line-height: 24px;
+}
+.switch {
+ position: absolute;
+ right: 0;
+ bottom: 10px;
+ color: #666;
+}
+.switch input {
+ margin-right: 0.3em;
+}
+.codesOn .i-name {
+ display: none;
+}
+.codesOn .i-code {
+ display: inline;
+}
+.i-code {
+ display: none;
+}
+</style>
+ <link rel="stylesheet" href="css/fontello-ato.css">
+ <link rel="stylesheet" href="css/animation.css">
+ <!--[if IE 7]>
+ <link rel="stylesheet" href="css/fontello-ato-ie7.css">
+ <![endif]-->
+ <script>
+ function toggleCodes(on) {
+ var obj = document.getElementById('icons');
+
+ if (on) {
+ obj.className += ' codesOn';
+ } else {
+ obj.className = obj.className.replace(' codesOn', '');
+ }
+ }
+
+ </script>
+ </head>
+ <body>
+ <div class="container header">
+ <h1>
+ fontello-ato
+ <small>font demo</small>
+ </h1>
+ <label class="switch">
+ <input type="checkbox" onclick="toggleCodes(this.checked)">show codes
+ </label>
+ </div>
+ <div id="icons" class="container">
+ <div class="row">
+ <div title="Code: 0xe800" class="the-icons span3"><i class="icon-ato-doc-text-inv"></i> <span class="i-name">icon-ato-doc-text-inv</span><span class="i-code">0xe800</span></div>
+ <div title="Code: 0xe801" class="the-icons span3"><i class="icon-ato-flash"></i> <span class="i-name">icon-ato-flash</span><span class="i-code">0xe801</span></div>
+ <div title="Code: 0xe803" class="the-icons span3"><i class="icon-ato-trophy"></i> <span class="i-name">icon-ato-trophy</span><span class="i-code">0xe803</span></div>
+ <div title="Code: 0xe805" class="the-icons span3"><i class="icon-ato-cancel"></i> <span class="i-name">icon-ato-cancel</span><span class="i-code">0xe805</span></div>
+ </div>
+ <div class="row">
+ <div title="Code: 0xe802" class="the-icons span3"><i class="icon-ato-ok"></i> <span class="i-name">icon-ato-ok</span><span class="i-code">0xe802</span></div>
+ </div>
+ </div>
+ <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/font/fontello-ato.eot b/plugins/AdminTools/template/fontello/font/fontello-ato.eot
new file mode 100644
index 000000000..0f80c691b
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/font/fontello-ato.eot
Binary files differ
diff --git a/plugins/AdminTools/template/fontello/font/fontello-ato.svg b/plugins/AdminTools/template/fontello/font/fontello-ato.svg
new file mode 100644
index 000000000..3f7ee4a6e
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/font/fontello-ato.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2013 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello-ato" horiz-adv-x="1000" >
+<font-face font-family="fontello-ato" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="doc-text-inv" unicode="&#xe800;" d="m571 82v36q0 8-5 13t-12 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q7 0 12 5t5 13z m0 143v36q0 8-5 13t-12 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q7 0 12 5t5 13z m143 196v-446q0-22-15-38t-38-16h-607q-23 0-38 16t-16 38v750q0 22 16 38t38 16h303v-304q0-22 16-38t38-16h303z m-1 72h-284v284q45-8 73-36l174-175q28-27 37-73z" horiz-adv-x="714.3" />
+<glyph glyph-name="flash" unicode="&#xe801;" d="m494 534q10-11 4-24l-302-646q-7-14-23-14q-2 0-8 1q-9 3-14 11t-3 16l110 451l-226-56q-2-1-7-1q-10 0-17 7q-10 8-7 21l112 461q2 8 9 13t15 5h183q11 0 18-7t7-17q0-4-2-10l-96-258l221 54q5 2 7 2q11 0 19-9z" horiz-adv-x="500" />
+<glyph glyph-name="trophy" unicode="&#xe803;" d="m510 134l0-66q70-8 116-32t46-56q0-36-65-63t-157-27q-90 0-156 27t-66 63q0 32 46 56t118 32l0 66q0 50-33 84t-113 88q-56 36-87 61t-75 72t-64 108t-20 137q0 14 11 24t25 10l172 0q48 92 242 92q196 0 244-92l170 0q14 0 25-10t11-24q0-76-20-137t-64-108t-75-72t-87-61q-78-52-111-87t-33-85z m138 252q80 56 126 114t54 148l-126 0q-6-158-54-262z m-198 364q-62 0-108-15t-64-32t-18-29q0-14 18-31t64-32t108-15t108 15t64 32t18 31q0 12-18 29t-64 32t-108 15z m-378-102q8-90 54-148t126-114q-48 104-54 262l-126 0z" horiz-adv-x="900" />
+<glyph glyph-name="cancel" unicode="&#xe805;" d="m799 116l-156-157l-234 235l-235-235l-156 157l234 234l-234 234l156 157l235-235l234 235l156-157l-234-234z" horiz-adv-x="817" />
+<glyph glyph-name="ok" unicode="&#xe802;" d="m0 339q0-35 24-60l246-239q24-25 60-25q36 0 60 25l505 495q25 24 25 59t-25 58q-25 25-60 25t-60-25l-445-435l-185 181q-25 24-60 24t-61-24q-24-24-24-59z" horiz-adv-x="920.4" />
+</font>
+</defs>
+</svg> \ No newline at end of file
diff --git a/plugins/AdminTools/template/fontello/font/fontello-ato.ttf b/plugins/AdminTools/template/fontello/font/fontello-ato.ttf
new file mode 100644
index 000000000..b71374923
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/font/fontello-ato.ttf
Binary files differ
diff --git a/plugins/AdminTools/template/fontello/font/fontello-ato.woff b/plugins/AdminTools/template/fontello/font/fontello-ato.woff
new file mode 100644
index 000000000..1aebe0542
--- /dev/null
+++ b/plugins/AdminTools/template/fontello/font/fontello-ato.woff
Binary files differ
diff --git a/plugins/AdminTools/template/index.php b/plugins/AdminTools/template/index.php
new file mode 100644
index 000000000..ec6605317
--- /dev/null
+++ b/plugins/AdminTools/template/index.php
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
diff --git a/plugins/AdminTools/template/public_controller.js b/plugins/AdminTools/template/public_controller.js
new file mode 100644
index 000000000..142cded3b
--- /dev/null
+++ b/plugins/AdminTools/template/public_controller.js
@@ -0,0 +1,319 @@
+var AdminTools = function($) {
+ var __this = this;
+
+ this.urlWS;
+ this.urlSelf;
+ this.multiView;
+
+ var $ato = $('#ato_header'),
+ $ato_closed = $('#ato_header_closed'),
+ ato_height = 28; // normal height, real height conputed on init()
+
+ // move to whole page down or up
+ function moveBody(dir, anim) {
+ var operator = dir=='show' ? '+=' : '-=';
+
+ if (anim) {
+ $('body').animate({'margin-top': operator+ato_height});
+
+ if ($('#the_page, [data-role="page"]').css('position')=='absolute') {
+ $('#the_page, [data-role="page"]').animate({'top': operator+ato_height});
+ }
+ }
+ else {
+ $('body').css({'margin-top': operator+ato_height});
+
+ if ($('#the_page, [data-role="page"]').css('position')=='absolute') {
+ $('#the_page, [data-role="page"]').css({'top': operator+ato_height});
+ }
+ }
+ }
+
+ // fill multiview selects
+ // data came from AJAX request or sessionStorage
+ function populateMultiView() {
+ var $multiview = $ato.find('.multiview');
+
+ if ($multiview.data('init')) return;
+
+ var render = function(data) {
+ var html = '';
+ $.each(data.users, function(i, user) {
+ html+= '<option value="'+ user.id +'">'+ user.username +'</option>';
+ });
+ $multiview.find('select[data-type="view_as"]').html(html)
+ .val(__this.multiView.view_as);
+
+ html = '';
+ $.each(data.themes, function(i, theme) {
+ html+= '<option value="'+ theme +'">'+ theme +'</option>';
+ });
+ $multiview.find('select[data-type="theme"]').html(html)
+ .val(__this.multiView.theme);
+
+ html = '';
+ $.each(data.languages, function(i, language) {
+ html+= '<option value="'+ language.id +'">'+ language.name +'</option>';
+ });
+ $multiview.find('select[data-type="lang"]').html(html)
+ .val(__this.multiView.lang);
+
+ $multiview.data('init', true);
+
+ $multiview.find('.switcher').show();
+ };
+
+ if ('sessionStorage' in window && window.sessionStorage.multiView != undefined) {
+ render(JSON.parse(window.sessionStorage.multiView));
+ }
+ else {
+ $.ajax({
+ method: 'POST',
+ url: __this.urlWS + 'multiView.getData',
+ dataType: 'json',
+ success: function(data) {
+ render(data.result);
+ if ('sessionStorage' in window) {
+ window.sessionStorage.multiView = JSON.stringify(data.result);
+ }
+ },
+ error: function(xhr, text, error) {
+ alert(text + ' ' + error);
+ }
+ });
+ }
+ }
+
+ // delete session cache
+ this.deleteCache = function() {
+ if ('sessionStorage' in window) {
+ window.sessionStorage.removeItem('multiView');
+ }
+ };
+
+ // move close button to smartpocket toolbar
+ this.initMobile = function() {
+ var $headerbar = $('div[data-role="header"] .title');
+ if ($headerbar.length == 1) {
+ $ato_closed.addClass('smartpocket');
+ $ato_closed.find('a').attr({
+ 'data-iconpos':'notext',
+ 'data-role':'button'
+ });
+ $headerbar.prepend($ato_closed);
+ }
+ };
+
+ // attach jquery handlers
+ this.init = function(open) {
+ $('body').prepend($ato); // ensure the bar is at the begining
+
+ $ato.show();
+ ato_height = $ato.height();
+
+ if ('localStorage' in window) {
+ if (window.localStorage.ato_panel_open == null) {
+ window.localStorage.ato_panel_open = open;
+ }
+
+ if (window.localStorage.ato_panel_open == 1) {
+ moveBody('show', false);
+ }
+ else {
+ $ato.hide();
+ $ato_closed.show();
+ }
+ }
+ else {
+ $ato.show();
+ moveBody('show', false);
+ }
+
+ /* <!-- sub menus --> */
+ $ato.find('.parent').on({
+ 'click': function() {
+ if ($(this).hasClass('multiview')) {
+ populateMultiView();
+ }
+ $(this).find('ul').toggle();
+ },
+ 'mouseleave': function(e) {
+ if (e.target.tagName.toLowerCase() != "select") {
+ $(this).find('ul').hide();
+ }
+ }
+ });
+ $ato.find('.parent>a').on('click', function(e) {
+ e.preventDefault();
+ });
+ $ato.find('.parent ul').on('mouseleave', function(e) {
+ if (e.target.tagName.toLowerCase() != "select") {
+ $(this).hide();
+ }
+ });
+
+ /* <!-- select boxes --> */
+ $ato.find('.switcher').on({
+ 'change': function() {
+ window.location.href = __this.urlSelf + 'ato_'+ $(this).data('type') +'='+ $(this).val();
+ },
+ 'click': function(e) {
+ e.stopPropagation();
+ }
+ });
+
+ /* <!-- toggle toolbar --> */
+ $ato.find('.close-panel').on('click', function(e) {
+ $ato.slideUp();
+ $ato_closed.slideDown();
+ moveBody('hide', true);
+
+ if ('localStorage' in window) window.localStorage.ato_panel_open = 0;
+ e.preventDefault();
+ });
+
+ $ato_closed.on('click', function(e) {
+ $ato.slideDown();
+ $ato_closed.slideUp();
+ moveBody('show', true);
+
+ if ('localStorage' in window) window.localStorage.ato_panel_open = 1;
+ e.preventDefault();
+ });
+ };
+
+ // init "set as representative" button
+ this.initRepresentative = function(image_id, category_id) {
+ $ato.find('.set-representative').on('click', function(e) {
+ if (!$(this).parent().hasClass('disabled')) {
+ $(this).parent().addClass('disabled')
+
+ $.ajax({
+ method: 'POST',
+ url: __this.urlWS + 'pwg.categories.setRepresentative',
+ dataType: 'json',
+ data: {
+ image_id: image_id,
+ category_id: category_id
+ },
+ success: function() {
+ $ato.find('.saved').fadeIn(200).delay(1600).fadeOut(200);
+ },
+ error: function(xhr, text, error) {
+ alert(text + ' ' + error);
+ }
+ });
+ }
+
+ e.preventDefault();
+ });
+ };
+
+ // init "add to caddie" button
+ this.initCaddie = function(image_id) {
+ $ato.find('.add-caddie').on('click', function(e) {
+ if (!$(this).parent().hasClass('disabled')) {
+ $(this).parent().addClass('disabled')
+
+ $.ajax({
+ method: 'POST',
+ url: __this.urlWS + 'pwg.caddie.add',
+ dataType: 'json',
+ data: {
+ image_id: image_id
+ },
+ success: function() {
+ $ato.find('.saved').fadeIn(200).delay(1600).fadeOut(200);
+ },
+ error: function(xhr, text, error) {
+ alert(text + ' ' + error);
+ }
+ });
+ }
+
+ e.preventDefault();
+ });
+ };
+
+ // init "quick edit" popup
+ this.initQuickEdit = function(is_picture, tokeninput_lang) {
+ var $ato_edit = $('#ato_quick_edit');
+
+ // try to find background color matching text color
+ // there is a 1s delay to wait for jQuery Mobile initialization
+ setTimeout(function() {
+ var bg_color = 'white';
+ var selectors = ['#the_page #content', '[data-role="page"]', 'body'];
+
+ for (var i=0; i<selectors.length; i++) {
+ var color = $(selectors[i]).css('background-color');
+ if (color && color!='transparent') {
+ bg_color = color;
+ break;
+ }
+ }
+
+ $ato_edit.css('background-color', bg_color);
+ }, 1000);
+
+ $ato_edit.find('.close-edit').on('click', function(e) {
+ $.colorbox.close()
+ e.preventDefault();
+ });
+
+ if (is_picture) {
+ $ato_edit.find('.datepicker').datepicker({
+ dateFormat: 'yy-mm-dd'
+ });
+ }
+
+ $(".edit-quick").colorbox({
+ inline: true,
+ transition: 'none',
+ width: 500,
+ maxWidth: '100%',
+ top: 50,
+ title: $ato_edit.attr('title'),
+
+ onOpen: function() {
+ if (!is_picture) return;
+
+ // fetch tags list on first open
+ if ($(this).data('tags-init')) return;
+
+ $.ajax({
+ method: 'POST',
+ url: __this.urlWS + 'pwg.tags.getList',
+ dataType: 'json',
+ success: function(data) {
+ var tags = [];
+ // convert to custom format
+ for (var i=0, l=data.result.tags.length; i<l; i++) {
+ tags.push({
+ id: '~~'+ data.result.tags[i].id +'~~',
+ name: data.result.tags[i].name
+ });
+ }
+
+ $ato_edit.find('.tags').tokenInput(
+ tags,
+ $.extend({
+ animateDropdown: false,
+ preventDuplicates: true,
+ allowFreeTagging: true
+ }, tokeninput_lang)
+ );
+
+ $.colorbox.resize();
+ $(this).data('tags-init', true);
+ },
+ error: function(xhr, text, error) {
+ alert(text + ' ' + error);
+ }
+ });
+ }
+ });
+ };
+
+ return this;
+}(jQuery); \ No newline at end of file
diff --git a/plugins/AdminTools/template/public_controller.tpl b/plugins/AdminTools/template/public_controller.tpl
new file mode 100644
index 000000000..8fd12dcf0
--- /dev/null
+++ b/plugins/AdminTools/template/public_controller.tpl
@@ -0,0 +1,188 @@
+{strip}
+{combine_css path=$ADMINTOOLS_PATH|cat:'template/style.css'}
+{combine_css path='admin/themes/default/fontello/css/fontello.css'}
+{combine_css path=$ADMINTOOLS_PATH|cat:'template/fontello/css/fontello-ato.css'}
+
+{if isset($ato.QUICK_EDIT)}
+ {*<!-- colorbox -->*}
+ {combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
+ {combine_css id='colorbox' path='themes/default/js/plugins/colorbox/style2/colorbox.css'}
+
+ {if isset($ato.IS_PICTURE)}
+ {*<!-- tokeninput -->*}
+ {combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'}
+ {combine_css path='themes/default/js/plugins/jquery.tokeninput.css'}
+
+ {*<!-- datepicker -->*}
+ {combine_script id='jquery.ui.datepicker' load='footer' path='themes/default/js/ui/jquery.ui.datepicker.js'}
+
+ {assign var=datepicker_language value='themes/default/js/ui/i18n/jquery.ui.datepicker-'|cat:$lang_info.code|cat:'.js'}
+ {if 'PHPWG_ROOT_PATH'|constant|cat:$datepicker_language|file_exists}
+ {combine_script id='jquery.ui.datepicker-'|cat:$lang_info.code load='footer' path=$datepicker_language}
+ {/if}
+
+ {combine_css path='themes/default/js/ui/theme/jquery.ui.core.css'}
+ {combine_css path='themes/default/js/ui/theme/jquery.ui.theme.css'}
+ {combine_css path='themes/default/js/ui/theme/jquery.ui.datepicker.css'}
+ {/if}
+{/if}
+
+{combine_script id='admintools.controller' load='footer' require='jquery' path=$ADMINTOOLS_PATH|cat:'template/public_controller.js'}
+{/strip}
+
+{footer_script require='admintools.controller'}
+AdminTools.urlWS = '{$ROOT_URL}ws.php?format=json&method=';
+AdminTools.urlSelf = '{$ato.U_SELF}';
+
+{if isset($ato.MULTIVIEW)}
+AdminTools.multiView = {
+ view_as: {$ato.MULTIVIEW.view_as},
+ theme: '{$ato.MULTIVIEW.theme}',
+ lang: '{$ato.MULTIVIEW.lang}'
+};
+{/if}
+
+{if $ato.DELETE_CACHE}
+ AdminTools.deleteCache();
+{/if}
+ AdminTools.init({intval($ato.DEFAULT_OPEN)});
+{if isset($themeconf.mobile) and $themeconf.mobile}
+ AdminTools.initMobile();
+{/if}
+{if isset($ato.U_SET_REPRESENTATIVE)}
+ AdminTools.initRepresentative({$current.id}, {$ato.CATEGORY_ID});
+{/if}
+{if isset($ato.U_CADDIE) and isset($ato.IS_PICTURE)}
+ AdminTools.initCaddie({$current.id});
+{/if}
+{if isset($ato.QUICK_EDIT)}
+ AdminTools.initQuickEdit({intval(isset($ato.IS_PICTURE))}, {
+ hintText: '{'Type in a search term'|translate|escape:javascript}',
+ noResultsText: '{'No results'|translate|escape:javascript}',
+ searchingText: '{'Searching...'|translate|escape:javascript}',
+ newText: ' ({'new'|translate|escape:javascript})'
+ });
+{/if}
+{/footer_script}
+
+<div id="ato_header_closed"{if $ato.POSITION=='right'} class="right"{/if}><a href="#" class="icon-tools"></a></div>
+
+<div id="ato_header">
+ <ul>
+ <li{if $ato.POSITION=='right'} class="right"{/if}><a href="#" class="icon-ato-cancel close-panel"></a></li>
+ {if isset($ato.U_SITE_ADMIN)}
+ <li class="parent"><a href="#" class="icon-menu ato-min-1">{'Administration'|translate}</a>
+ <ul>
+ <li><a class="icon-home" href="{$ato.U_SITE_ADMIN}intro">{'Home'|translate}</a></li>
+ <li><a class="icon-picture" href="{$ato.U_SITE_ADMIN}batch_manager">{'Photos'|translate}</a></li>
+ <li><a class="icon-sitemap" href="{$ato.U_SITE_ADMIN}cat_list">{'Albums'|translate}</a></li>
+ <li><a class="icon-users" href="{$ato.U_SITE_ADMIN}user_list">{'Users'|translate}</a></li>
+ <li><a class="icon-puzzle" href="{$ato.U_SITE_ADMIN}plugins">{'Plugins'|translate}</a></li>
+ <li><a class="icon-wrench" href="{$ato.U_SITE_ADMIN}maintenance">{'Tools'|translate}</a></li>
+ <li><a class="icon-cog" href="{$ato.U_SITE_ADMIN}configuration">{'Configuration'|translate}</a></li>
+ </ul>
+ </li>
+ {/if}
+ {if isset($ato.U_ADMIN_EDIT)}
+ <li class="parent"><a href="#" class="icon-pencil ato-min-2">{'Edit'|translate}</a>
+ <ul>
+ <li><a href="#ato_quick_edit" class="icon-ato-flash edit-quick">{'Quick edit'|translate}</a></li>
+ <li><a class="icon-ato-doc-text-inv" href="{$ato.U_ADMIN_EDIT}">{'Properties page'|translate}</a></li>
+ {if isset($ato.U_DELETE)}
+ <li style="margin-top:1em;"><a class="icon-ato-cancel" href="{$ato.U_DELETE}" onclick="return confirm('{'Are you sure?'|translate|escape:javascript}')">{'delete photo'|translate|ucfirst}</a></li>
+ {/if}
+ </ul>
+ </li>
+ {elseif isset($ato.QUICK_EDIT)}
+ <li><a href="#ato_quick_edit" class="icon-pencil edit-quick ato-min-2">{'Edit'|translate}</a></li>
+ {if isset($ato.U_DELETE)}
+ <li><a class="icon-ato-cancel ato-min-2" href="{$ato.U_DELETE}" onclick="return confirm('{'Are you sure?'|translate|escape:javascript}')">{'delete photo'|translate|ucfirst}</a></li>
+ {/if}
+ {/if}
+ {if isset($ato.U_SET_REPRESENTATIVE)}
+ <li {if $ato.IS_REPRESENTATIVE}class="disabled"{/if}><a class="icon-ato-trophy set-representative ato-min-2" href="{$ato.U_SET_REPRESENTATIVE}">{'representative'|translate|ucfirst}</a></li>
+ {/if}
+ {if isset($ato.U_CADDIE)}
+ <li {if $ato.IS_IN_CADDIE}class="disabled"{/if}><a class="icon-flag add-caddie ato-min-2" href="{$ato.U_CADDIE}">{'Add to caddie'|translate}</a></li>
+ {/if}
+ {if isset($ato.IS_CATEGORY)}
+ <li><a class="icon-plus-circled ato-min-2" href="{$ato.U_SITE_ADMIN}photos_add&amp;album={$ato.CATEGORY_ID}">{'Add Photos'|translate}</a></li>
+ {/if}
+ <li class="saved"><span class="icon-ato-ok ato-min-1">{'Saved'|translate}</span></li>
+
+ {if isset($ato.MULTIVIEW)}
+ <li class="parent right multiview"><a class="icon-cog-alt ato-min-1" href="#">{'Tools'|translate}</a>
+ <ul>
+ <li><label>{'View as'|translate}</label>
+ <select class="switcher" data-type="view_as"></select>
+ </li>
+ <li><label>{'Theme'|translate}</label>
+ <select class="switcher" data-type="theme"></select>
+ </li>
+ <li><label>{'Language'|translate}</label>
+ <select class="switcher" data-type="lang"></select>
+ </li>
+ <li><a class="icon-check{if !$ato.MULTIVIEW.show_queries}-empty{/if}" href="{$ato.U_SELF}ato_show_queries={(int)!$ato.MULTIVIEW.show_queries}">{'Show SQL queries'|translate}</a></li>
+ <li><a class="icon-check{if !$ato.MULTIVIEW.debug_l10n}-empty{/if}" href="{$ato.U_SELF}ato_debug_l10n={(int)!$ato.MULTIVIEW.debug_l10n}">{'Debug languages'|translate}</a></li>
+ <li><a class="icon-check{if !$ato.MULTIVIEW.debug_template}-empty{/if}" href="{$ato.U_SELF}ato_debug_template={(int)!$ato.MULTIVIEW.debug_template}">{'Debug template'|translate}</a></li>
+ <li><a class="icon-check{if !$ato.MULTIVIEW.template_combine_files}-empty{/if}" href="{$ato.U_SELF}ato_template_combine_files={(int)!$ato.MULTIVIEW.template_combine_files}">{'Combine JS&CSS'|translate}</a></li>
+ <li><a class="icon-check{if $ato.MULTIVIEW.no_history}-empty{/if}" href="{$ato.U_SELF}ato_no_history={(int)!$ato.MULTIVIEW.no_history}">{'Save visit in history'|translate}</a></li>
+ <li><a class="icon-ato-null" href="{$ato.U_SELF}ato_purge_template=1">{'Purge compiled templates'|translate}</a></li>
+ </ul>
+ </li>
+ {if $ato.USER.id != $ato.MULTIVIEW.view_as}
+ <li class="right ato-hide-2"><span>
+ {'Viewing as <b>%s</b>.'|translate:$ato.CURRENT_USERNAME}
+ <a href="{$ato.U_SELF}ato_view_as={$ato.USER.id}">{'Revert'|translate}</a>
+ </span></li>
+ {/if}
+ {/if}
+ </ul>
+</div>
+
+{if isset($ato.QUICK_EDIT)}
+<div style="display:none;">
+ <div id="ato_quick_edit" title="{'Quick edit'|translate}">
+ <form method="post" action="{$ato.U_SELF}">
+ <fieldset class="left">
+ {if isset($ato.QUICK_EDIT.img)}<img src="{$ato.QUICK_EDIT.img}" width="100" height="100">{/if}
+ <input type="submit" value="{'Save'|translate}">
+ <a href="#" class="icon-ato-cancel close-edit">{'Cancel'|translate}</a>
+ </fieldset>
+
+ <fieldset class="main">
+ <label for="quick_edit_name">{'Name'|translate}</label>
+ <input type="text" name="name" id="quick_edit_name" value="{$ato.QUICK_EDIT.name|escape:html}">
+
+ {if isset($ato.IS_PICTURE)}
+ <label for="quick_edit_author">{'Author'|translate}</label>
+ <input type="text" name="author" id="quick_edit_author" value="{$ato.QUICK_EDIT.author|escape:html}">
+
+ <label for="quick_edit_date_creation">{'Creation date'|translate}</label>
+ <input type="text" name="date_creation" id="quick_edit_date_creation" class="datepicker" value="{$ato.QUICK_EDIT.date_creation}">
+ <input type="hidden" name="date_creation_time" value="{$ato.QUICK_EDIT.date_creation_time}">
+
+ <label for="quick_edit_tags">{'Tags'|translate}</label>
+ <select name="tags" id="quick_edit_tags" class="tags">
+ {foreach from=$ato.QUICK_EDIT.tag_selection item=tag}
+ <option value="{$tag.id}" class="selected">{$tag.name}</option>
+ {/foreach}
+ </select>
+
+ {if isset($available_permission_levels)}
+ <label for="quick_edit_level">{'Who can see this photo?'|@translate}</label>
+ <select name="level" size="1">
+ {html_options options=$available_permission_levels selected=$ato.QUICK_EDIT.level}
+ </select>
+ {/if}
+ {/if}
+
+ <label for="quick_edit_comment">{'Description'|translate}</label>
+ <textarea name="comment" id="quick_edit_comment">{$ato.QUICK_EDIT.comment}</textarea>
+ </fieldset>
+
+ <input type="hidden" name="action" value="quick_edit">
+ </form>
+ </div>
+</div>
+{/if} \ No newline at end of file
diff --git a/plugins/AdminTools/template/style.css b/plugins/AdminTools/template/style.css
new file mode 100644
index 000000000..9b10158c2
--- /dev/null
+++ b/plugins/AdminTools/template/style.css
@@ -0,0 +1,251 @@
+.icon-ato-null:before { content:' '; }
+
+.token-input-dropdown {
+ z-index:10000 !important;
+}
+
+#ato_header, #ato_header_closed {
+ display:none;
+}
+#ato_header {
+ width:100%;
+}
+#ato_header, #ato_header_closed:not(.smartpocket) {
+ position:fixed;
+ top:0;
+ left:0;
+ background:#464646;
+ background-image:linear-gradient(to bottom, #383838 0%, #464646 20%, #464646 80%, #383838 100%);
+ z-index:1000;
+}
+
+#ato_header>ul {
+ padding:0;
+ margin:0;
+}
+
+#ato_header>ul li {
+ list-style:none;
+ line-height:16px;
+ font-size:13px;
+ white-space:nowrap;
+}
+ #ato_header>ul li>*, #ato_header_closed:not(.smartpocket)>* {
+ display:inline-block;
+ padding:5px 10px;
+ border:none;
+ text-decoration:none;
+ }
+ #ato_header>ul li>*:before {
+ font-size:16px;
+ margin-right:0.5em;
+ }
+
+#ato_header>ul>li {
+ float:left;
+ display:inline-block;
+ position:relative;
+ overflow:visible;
+}
+ #ato_header>ul>li a {
+ color:white;
+ }
+ #ato_header>ul>li.right {
+ float:right;
+ }
+ #ato_header>ul>li {
+ border-left:1px solid #666;
+ }
+ #ato_header>ul>li {
+ border-right:1px solid #222;
+ }
+ #ato_header>ul>li>*, #ato_header_closed:not(.smartpocket)>* {
+ color:#ddd;
+ text-shadow:1px 1px 0px #222;
+ }
+ #ato_header>ul>li.disabled [class*="icon-"] {
+ color:#888;
+ text-shadow:none;
+ }
+ #ato_header>ul>li:not(.disabled):hover, #ato_header_closed:not(.smartpocket):hover {
+ background:#222;
+ background-image:linear-gradient(to bottom, #222, #353535);
+ }
+
+#ato_header>ul ul {
+ display:none;
+ position:absolute;
+ top:27px;
+ left:0;
+ min-width:100%;
+ background:#fefefe;
+ padding:0;
+ margin:0;
+ box-shadow:3px 3px 5px rgba(0,0,0,0.5);
+}
+ #ato_header>ul>li.right ul {
+ left:auto;
+ right:0;
+ }
+ #ato_header>ul ul li {
+ }
+ #ato_header>ul ul li:hover {
+ background:#dedede;
+ }
+ #ato_header>ul ul li>* {
+ color:#444;
+ text-shadow:1px 1px 0px #eee;
+ }
+ #ato_header>ul ul label {
+ font-weight:bold;
+ color:#777;
+ display:inline-block;
+ width:80px;
+ padding:5px;
+ text-align:right;
+ font-size:11px;
+ }
+ #ato_header>ul ul select, #ato_header>ul ul option {
+ font-size:13px;
+ line-height:15px;
+ color:#444;
+ background:#fefefe;
+ border-radius:2px;
+ text-shadow:none;
+ }
+ #ato_header>ul ul select {
+ border:1px solid #777;
+ height:22px;
+ padding:2px 3px;
+ }
+ #ato_header .switcher {
+ display:none;
+ }
+
+#ato_header_closed:not(.smartpocket) {
+ left:10px;
+ font-size:20px;
+ border-radius:0 0 20% 20%;
+ box-shadow:1px 1px 1px rgba(0,0,0,0.5);
+ width:35px;
+ height:35px;
+}
+ #ato_header_closed:not(.smartpocket).right {
+ left:auto;
+ right:10px;
+ }
+ #ato_header_closed:not(.smartpocket)>* {
+ padding:4px;
+ }
+#ato_header_closed.smartpocket {
+ float:left;
+ margin-right:10px;
+}
+ #ato_header_closed.smartpocket .ui-btn-inner {
+ display:none;
+ }
+
+#ato_header>ul .close-panel {
+ padding:6px 1px 4px 5px;
+}
+#ato_header>ul .close-panel:hover {
+ color:#d00;
+}
+#ato_header>ul .saved {
+ display:none;
+ border:none !important;
+ -webkit-animation:blink 0.8s infinite;
+ animation:blink 0.8s infinite;
+}
+ #ato_header>ul .saved>* {
+ color:#5f5;
+ }
+
+#ato_quick_edit {
+ padding:10px;
+}
+ #ato_quick_edit fieldset {
+ margin:0;
+ padding:0;
+ border:none;
+ }
+ #ato_quick_edit fieldset.left {
+ float:left;
+ width:100px;
+ text-align:center;
+ }
+ #ato_quick_edit fieldset.left img {
+ border-radius:2px;
+ border:1px solid #111;
+ }
+ #ato_quick_edit fieldset.main {
+ margin:0 0 0 110px;
+ }
+ #ato_quick_edit label {
+ display:block;
+ font-weight:bold;
+ }
+ #ato_quick_edit input, #ato_quick_edit textarea, #ato_quick_edit select {
+ width:100%;
+ margin:0 0 1em 0;
+ border-radius:2px;
+ padding:2px;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box;
+ }
+ #ato_quick_edit textarea {
+ height:110px;
+ }
+ #ato_quick_edit input[type="submit"] {
+ margin:1.5em 0;
+ cursor:pointer;
+ background:#e60;
+ border:none;
+ color:#fff;
+ }
+ #ato_quick_edit input[type="submit"]:hover {
+ background:#EF962F;
+ }
+ #ato_quick_edit ul.token-input-list {
+ width:100%;
+ margin:0 0 1em 0;
+ }
+
+@-webkit-keyframes blink {
+ 0% { opacity:0; }
+ 50% { opacity:1; }
+ 100% { opacity:0; }
+}
+@keyframes blink {
+ 0% { opacity:0; }
+ 50% { opacity:1; }
+ 100% { opacity:0; }
+}
+
+@media (max-width:900px) {
+ #ato_header .ato-min-1 {
+ font-size:0px;
+ line-height:0px;
+ }
+ #ato_header .ato-min-1:before {
+ margin-right:0;
+ }
+
+ #ato_header .ato-hide-1 {
+ display:none;
+ }
+}
+
+@media (max-width:750px) {
+ #ato_header .ato-min-2 {
+ font-size:0px;
+ line-height:0px;
+ }
+ #ato_header .ato-min-2:before {
+ margin-right:0;
+ }
+
+ #ato_header .ato-hide-2 {
+ display:none;
+ }
+} \ No newline at end of file