From eecf2e85a4803b7eb2dabc693dcac54da2616f87 Mon Sep 17 00:00:00 2001 From: Awilum Date: Fri, 31 Jan 2014 19:01:53 +0200 Subject: [PATCH 01/22] Files Manager Improvements - Bootstrap: fileinput.js v3.0.0-p7 #94 --- public/assets/css/bootstrap-fileupload.css | 119 ++++-------- public/assets/js/bootstrap-fileupload.js | 200 +++++++++++---------- 2 files changed, 142 insertions(+), 177 deletions(-) diff --git a/public/assets/css/bootstrap-fileupload.css b/public/assets/css/bootstrap-fileupload.css index e19788e..c48a973 100644 --- a/public/assets/css/bootstrap-fileupload.css +++ b/public/assets/css/bootstrap-fileupload.css @@ -1,39 +1,3 @@ -/*! - * Bootstrap v2.3.1-j6 - * - * 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 by @mdo and @fat, extended by @ArnoldDaniels. - */ -.clearfix { - *zoom: 1; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; - line-height: 0; -} -.clearfix:after { - clear: both; -} -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} .btn-file { overflow: hidden; position: relative; @@ -51,85 +15,76 @@ direction: ltr; cursor: pointer; } -.fileupload { +.fileinput { margin-bottom: 9px; + display: inline-block; } -.fileupload .uneditable-input { +.fileinput .uneditable-input { display: inline-block; margin-bottom: 0px; vertical-align: middle; cursor: text; } -.fileupload .thumbnail { +.fileinput .thumbnail { overflow: hidden; display: inline-block; margin-bottom: 5px; vertical-align: middle; text-align: center; } -.fileupload .thumbnail > img { - display: inline-block; - vertical-align: middle; +.fileinput .thumbnail > img { max-height: 100%; } -.fileupload .btn { +.fileinput .btn { vertical-align: middle; } -.fileupload-exists .fileupload-new, -.fileupload-new .fileupload-exists { +.fileinput-exists .fileinput-new, +.fileinput-new .fileinput-exists { display: none; } -.fileupload-exists { - float:none; -} -.fileupload-inline .fileupload-controls { +.fileinput-inline .fileinput-controls { display: inline; } -.fileupload-new .input-append .btn-file { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; +.fileinput .uneditable-input { + white-space: normal; +} +.fileinput-new .input-group .btn-file { + border-radius: 0 4px 4px 0; +} +.fileinput-new .input-group .btn-file.btn-xs, +.fileinput-new .input-group .btn-file.btn-sm { border-radius: 0 3px 3px 0; } -.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; +.fileinput-new .input-group .btn-file.btn-lg { + border-radius: 0 6px 6px 0; } -.fileupload-new.thumbnail-borderless .thumbnail { - border: 1px solid #ddd; +.form-group.has-warning .fileinput .uneditable-input { + color: #c09853; + border-color: #faebcc; } -.control-group.warning .fileupload .uneditable-input { - color: #a47e3c; - border-color: #a47e3c; +.form-group.has-warning .fileinput .fileinput-preview { + color: #c09853; } -.control-group.warning .fileupload .fileupload-preview { - color: #a47e3c; +.form-group.has-warning .fileinput .thumbnail { + border-color: #faebcc; } -.control-group.warning .fileupload .thumbnail { - border-color: #a47e3c; -} -.control-group.error .fileupload .uneditable-input { +.form-group.has-error .fileinput .uneditable-input { color: #b94a48; - border-color: #b94a48; + border-color: #ebccd1; } -.control-group.error .fileupload .fileupload-preview { +.form-group.has-error .fileinput .fileinput-preview { color: #b94a48; } -.control-group.error .fileupload .thumbnail { - border-color: #b94a48; +.form-group.has-error .fileinput .thumbnail { + border-color: #ebccd1; } -.control-group.success .fileupload .uneditable-input { +.form-group.has-success .fileinput .uneditable-input { color: #468847; - border-color: #468847; + border-color: #d6e9c6; } -.control-group.success .fileupload .fileupload-preview { +.form-group.has-success .fileinput .fileinput-preview { color: #468847; } -.control-group.success .fileupload .thumbnail { - border-color: #468847; -} +.form-group.has-success .fileinput .thumbnail { + border-color: #d6e9c6; +} \ No newline at end of file diff --git a/public/assets/js/bootstrap-fileupload.js b/public/assets/js/bootstrap-fileupload.js index 97a6da5..6d90417 100644 --- a/public/assets/js/bootstrap-fileupload.js +++ b/public/assets/js/bootstrap-fileupload.js @@ -1,6 +1,6 @@ /* =========================================================== - * bootstrap-fileupload.js j2 - * http://jasny.github.com/bootstrap/javascript.html#fileupload + * Bootstrap: fileinput.js v3.0.0-p7 + * http://jasny.github.com/bootstrap/javascript.html#fileinput * =========================================================== * Copyright 2012 Jasny BV, Netherlands. * @@ -17,16 +17,15 @@ * limitations under the License. * ========================================================== */ -!function ($) { ++function ($) { "use strict"; - "use strict"; // jshint ;_ + var isIE = window.navigator.appName == 'Microsoft Internet Explorer' - /* FILEUPLOAD PUBLIC CLASS DEFINITION - * ================================= */ + // FILEUPLOAD PUBLIC CLASS DEFINITION + // ================================= var Fileupload = function (element, options) { this.$element = $(element) - this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file") this.$input = this.$element.find(':file') if (this.$input.length === 0) return @@ -39,131 +38,142 @@ this.$element.prepend(this.$hidden) } - this.$preview = this.$element.find('.fileupload-preview') + this.$preview = this.$element.find('.fileinput-preview') var height = this.$preview.css('height') if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height) this.original = { - 'exists': this.$element.hasClass('fileupload-exists'), - 'preview': this.$preview.html(), - 'hiddenVal': this.$hidden.val() + exists: this.$element.hasClass('fileinput-exists'), + preview: this.$preview.html(), + hiddenVal: this.$hidden.val() } - this.$remove = this.$element.find('[data-dismiss="fileupload"]') - - this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this)) - this.listen() } - Fileupload.prototype = { + Fileupload.prototype.listen = function() { + this.$input.on('change.bs.fileinput', $.proxy(this.change, this)) + $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this)) - listen: function() { - this.$input.on('change.fileupload', $.proxy(this.change, this)) - $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this)) - if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this)) - }, - - change: function(e, invoked) { - if (invoked === 'clear') return - - var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null) - - if (!file) { - this.clear() - return - } - - this.$hidden.val('') - this.$hidden.attr('name', '') - this.$input.attr('name', this.name) + this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this)) + this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this)) + }, - if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") { - var reader = new FileReader() - var preview = this.$preview - var element = this.$element + Fileupload.prototype.change = function(e) { + if (e.target.files === undefined) e.target.files = e.target && e.target.value ? [ {name: e.target.value.replace(/^.+\\/, '')} ] : [] + if (e.target.files.length === 0) return - reader.onload = function(e) { - preview.html('') - element.addClass('fileupload-exists').removeClass('fileupload-new') - } + this.$hidden.val('') + this.$hidden.attr('name', '') + this.$input.attr('name', this.name) - reader.readAsDataURL(file) - } else { - this.$preview.text(file.name) - this.$element.addClass('fileupload-exists').removeClass('fileupload-new') - } - }, + var file = e.target.files[0] - clear: function(e) { - this.$hidden.val('') - this.$hidden.attr('name', this.name) - this.$input.attr('name', '') + if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") { + var reader = new FileReader() + var preview = this.$preview + var element = this.$element - //ie8+ doesn't support changing the value of input with type=file so clone instead - if (navigator.userAgent.match(/msie/i)){ - var inputClone = this.$input.clone(true); - this.$input.after(inputClone); - this.$input.remove(); - this.$input = inputClone; - }else{ - this.$input.val('') + reader.onload = function(re) { + var $img = $('').attr('src', re.target.result) + e.target.files[0].result = re.target.result + + element.find('.fileinput-filename').text(file.name) + + // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account + if (preview.css('max-height') != 'none') $img.css('max-height', parseInt(preview.css('max-height'), 10) - parseInt(preview.css('padding-top'), 10) - parseInt(preview.css('padding-bottom'), 10) - parseInt(preview.css('border-top'), 10) - parseInt(preview.css('border-bottom'), 10)) + + preview.html($img) + element.addClass('fileinput-exists').removeClass('fileinput-new') + + element.trigger('change.bs.fileinput', e.target.files) } - this.$preview.html('') - this.$element.addClass('fileupload-new').removeClass('fileupload-exists') - - if (e) { - this.$input.trigger('change', [ 'clear' ]) - e.preventDefault() - } - }, - - reset: function(e) { - this.clear() + reader.readAsDataURL(file) + } else { + this.$element.find('.fileinput-filename').text(file.name) + this.$preview.text(file.name) - this.$hidden.val(this.original.hiddenVal) - this.$preview.html(this.original.preview) + this.$element.addClass('fileinput-exists').removeClass('fileinput-new') - if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new') - else this.$element.addClass('fileupload-new').removeClass('fileupload-exists') - }, - - trigger: function(e) { - this.$input.trigger('click') - e.preventDefault() + this.$element.trigger('change.bs.fileinput') } + }, + + Fileupload.prototype.clear = function(e) { + if (e) e.preventDefault() + + this.$hidden.val('') + this.$hidden.attr('name', this.name) + this.$input.attr('name', '') + + //ie8+ doesn't support changing the value of input with type=file so clone instead + if (isIE) { + var inputClone = this.$input.clone(true); + this.$input.after(inputClone); + this.$input.remove(); + this.$input = inputClone; + } else { + this.$input.val('') + } + + this.$preview.html('') + this.$element.find('.fileinput-filename').text('') + this.$element.addClass('fileinput-new').removeClass('fileinput-exists') + + if (e !== false) { + this.$input.trigger('change') + this.$element.trigger('clear.bs.fileinput') + } + }, + + Fileupload.prototype.reset = function() { + this.clear(false) + + this.$hidden.val(this.original.hiddenVal) + this.$preview.html(this.original.preview) + this.$element.find('.fileinput-filename').text('') + + if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new') + else this.$element.addClass('fileinput-new').removeClass('fileinput-exists') + + this.$element.trigger('reset.bs.fileinput') + }, + + Fileupload.prototype.trigger = function(e) { + this.$input.trigger('click') + e.preventDefault() } - /* FILEUPLOAD PLUGIN DEFINITION - * =========================== */ + // FILEUPLOAD PLUGIN DEFINITION + // =========================== - $.fn.fileupload = function (options) { + $.fn.fileinput = function (options) { return this.each(function () { var $this = $(this) - , data = $this.data('fileupload') - if (!data) $this.data('fileupload', (data = new Fileupload(this, options))) + , data = $this.data('fileinput') + if (!data) $this.data('fileinput', (data = new Fileupload(this, options))) if (typeof options == 'string') data[options]() }) } - $.fn.fileupload.Constructor = Fileupload + $.fn.fileinput.Constructor = Fileupload - /* FILEUPLOAD DATA-API - * ================== */ + // FILEUPLOAD DATA-API + // ================== - $(document).on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) { + $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) { var $this = $(this) - if ($this.data('fileupload')) return - $this.fileupload($this.data()) + if ($this.data('fileinput')) return + $this.fileinput($this.data()) - var $target = $(e.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]'); + var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]'); if ($target.length > 0) { - $target.trigger('click.fileupload') e.preventDefault() + $target.trigger('click.bs.fileinput') } }) -}(window.jQuery); +}(window.jQuery); \ No newline at end of file From 8f0e576f99fc156b14a380bc5ac2e289654c7e97 Mon Sep 17 00:00:00 2001 From: Awilum Date: Fri, 31 Jan 2014 19:02:25 +0200 Subject: [PATCH 02/22] Files Manager Improvements - Bootstrap: fileinput.js v3.0.0-p7 #94 --- plugins/box/filesmanager/css/style.css | 11 ++++++++ .../filesmanager/views/backend/index.view.php | 25 ++++++++++--------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/plugins/box/filesmanager/css/style.css b/plugins/box/filesmanager/css/style.css index cb0f5bf..653f7e4 100644 --- a/plugins/box/filesmanager/css/style.css +++ b/plugins/box/filesmanager/css/style.css @@ -43,3 +43,14 @@ .upload-file-pholder { padding-top: 5px; } + +.file-size-max-upload { + color: #ccc; + text-decoration: none; +} + +.file-size-max-upload:hover { + color: #ccc; + cursor: default; + text-decoration: none; +} \ No newline at end of file diff --git a/plugins/box/filesmanager/views/backend/index.view.php b/plugins/box/filesmanager/views/backend/index.view.php index 610712f..c5127c4 100755 --- a/plugins/box/filesmanager/views/backend/index.view.php +++ b/plugins/box/filesmanager/views/backend/index.view.php @@ -12,25 +12,26 @@ ); ?>
-
- - 'btn btn-primary')). - Form::close() - ) - ?> - - × +
+ + 'btn btn-primary')). + Form::close() + ) + ?> + + ×
+
-
From 918820da3eb733022c71a1ad00b6686fd644c6b0 Mon Sep 17 00:00:00 2001 From: Awilum Date: Fri, 31 Jan 2014 20:18:20 +0200 Subject: [PATCH 03/22] UI Improvements - Admin - Login page updates #194 --- admin/index.php | 7 ++++-- admin/themes/default/css/default.css | 18 ++++++++++++++ admin/themes/default/login.template.php | 31 +++++++++++++------------ 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/admin/index.php b/admin/index.php index 81add39..cdbda28 100644 --- a/admin/index.php +++ b/admin/index.php @@ -82,6 +82,9 @@ if (Request::post('login_submit')) { } } } + + Notification::set('error', $login_error); + } // Errors @@ -117,13 +120,13 @@ if (Request::post('reset_password_submit')) { $mail->AddReplyTo(Option::get('system_email')); $mail->AddAddress($user['email'], $user['login']); $mail->Subject = __('Your login details for :site_name', 'users', array(':site_name' => $site_name)); - $mail->MsgHTML(View::factory('box/users/views/emails/layout_email') + $mail->MsgHTML(View::factory('box/emails/views/emails/email_layout') ->assign('site_url', $site_url) ->assign('site_name', $site_name) ->assign('user_id', $user['id']) ->assign('user_login', $user['login']) ->assign('new_hash', $new_hash) - ->assign('view', 'reset_password_email') + ->assign('email_template', 'reset-password') ->render()); $mail->Send(); diff --git a/admin/themes/default/css/default.css b/admin/themes/default/css/default.css index e280b51..9c903c6 100644 --- a/admin/themes/default/css/default.css +++ b/admin/themes/default/css/default.css @@ -92,6 +92,20 @@ footer span { padding-left: 0; } +/* Admin Form */ +.form-signin { + width: 400px; +} + +.form-signin { + margin-top: 40px; +} + +.form-signin .administration-area, +.form-signin .reset-password-area { + margin-top: 40px; +} + /* Dropdown Menu */ .dropdown-menu .divider { background-color: #555454; @@ -108,6 +122,10 @@ footer span { } /* Navbar */ +.navbar-inverse .navbar-nav > li > a { + color: #eee; +} + .navbar-inverse { background: #222; } diff --git a/admin/themes/default/login.template.php b/admin/themes/default/login.template.php index 9b64fab..a99536e 100644 --- a/admin/themes/default/login.template.php +++ b/admin/themes/default/login.template.php @@ -59,13 +59,18 @@ + +