diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 67f32b3f5..746ade929 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -731,5 +731,62 @@ class Helper } + // Nicked from Drupal :) + // Returns a file size limit in bytes based on the PHP upload_max_filesize + // and post_max_size + public static function file_upload_max_size() { + static $max_size = -1; + + if ($max_size < 0) { + // Start with post_max_size. + $post_max_size = Helper::parse_size(ini_get('post_max_size')); + if ($post_max_size > 0) { + $max_size = $post_max_size; + } + + // If upload_max_size is less, then reduce. Except if upload_max_size is + // zero, which indicates no limit. + $upload_max = Helper::parse_size(ini_get('upload_max_filesize')); + if ($upload_max > 0 && $upload_max < $max_size) { + $max_size = $upload_max; + } + } + return $max_size; + } + + public static function file_upload_max_size_readable() { + static $max_size = -1; + + if ($max_size < 0) { + // Start with post_max_size. + $post_max_size = Helper::parse_size(ini_get('post_max_size')); + if ($post_max_size > 0) { + $max_size = ini_get('post_max_size'); + } + + // If upload_max_size is less, then reduce. Except if upload_max_size is + // zero, which indicates no limit. + $upload_max = Helper::parse_size(ini_get('upload_max_filesize')); + if ($upload_max > 0 && $upload_max < $max_size) { + $max_size = ini_get('upload_max_filesize'); + } + } + return $max_size; + } + + public static function parse_size($size) { + $unit = preg_replace('/[^bkmgtpezy]/i', '', $size); // Remove the non-unit characters from the size. + $size = preg_replace('/[^0-9\.]/', '', $size); // Remove the non-numeric characters from the size. + if ($unit) { + // Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by. + return round($size * pow(1024, stripos('bkmgtpezy', $unit[0]))); + } + else { + return round($size); + } + } + + + } diff --git a/app/Http/Controllers/ManufacturersController.php b/app/Http/Controllers/ManufacturersController.php index 39a8f7acf..323dfcbdf 100755 --- a/app/Http/Controllers/ManufacturersController.php +++ b/app/Http/Controllers/ManufacturersController.php @@ -67,7 +67,7 @@ class ManufacturersController extends Controller public function store(ImageUploadRequest $request) { - $this->authorize('edit', Manufacturer::class); + $this->authorize('create', Manufacturer::class); $manufacturer = new Manufacturer; $manufacturer->name = $request->input('name'); $manufacturer->user_id = Auth::user()->id; diff --git a/database/migrations/2016_02_19_070119_add_remember_token_to_users_table.php b/database/migrations/2016_02_19_070119_add_remember_token_to_users_table.php index d5595ac1d..6270018e5 100644 --- a/database/migrations/2016_02_19_070119_add_remember_token_to_users_table.php +++ b/database/migrations/2016_02_19_070119_add_remember_token_to_users_table.php @@ -12,9 +12,11 @@ class AddRememberTokenToUsersTable extends Migration */ public function up() { - Schema::table('users', function (Blueprint $table) { - $table->text('remember_token')->nullable()->default(NULL); - }); + if (!Schema::hasColumn('users', 'remember_token')) { + Schema::table('users', function (Blueprint $table) { + $table->text('remember_token')->nullable()->default(null); + }); + } } /** @@ -25,7 +27,7 @@ class AddRememberTokenToUsersTable extends Migration public function down() { Schema::table('users', function (Blueprint $table) { - // + $table->dropColumn('remember_token'); }); } } diff --git a/database/migrations/2016_02_19_073625_create_password_resets_table.php b/database/migrations/2016_02_19_073625_create_password_resets_table.php index 30637e15a..113175711 100644 --- a/database/migrations/2016_02_19_073625_create_password_resets_table.php +++ b/database/migrations/2016_02_19_073625_create_password_resets_table.php @@ -32,6 +32,6 @@ class CreatePasswordResetsTable extends Migration */ public function down() { - // + Schema::dropIfExists('password_resets'); } } diff --git a/public/js/build/all.js b/public/js/build/all.js index c17503e09..5d09311b2 100644 --- a/public/js/build/all.js +++ b/public/js/build/all.js @@ -23,4 +23,4 @@ var n=this;t.call(this,e,i),e.on("select",function(t){n._selectTriggered(t)}),e. f>=b.outerHeight())return void(y=!0);T.stop(!0,!0).fadeIn("fast"),s.railVisible&&D.stop(!0,!0).fadeIn("fast")}function l(){s.alwaysVisible||(d=setTimeout(function(){s.disableFadeOut&&u||c||h||(T.fadeOut("slow"),D.fadeOut("slow"))},1e3))}var u,c,h,d,p,f,g,m,v="
",_=30,y=!1,b=e(this);if(b.parent().hasClass(s.wrapperClass)){var w=b.scrollTop();if(T=b.siblings("."+s.barClass),D=b.siblings("."+s.railClass),r(),e.isPlainObject(i)){if("height"in i&&"auto"==i.height){b.parent().css("height","auto"),b.css("height","auto");var x=b.parent().parent().height();b.parent().css("height",x),b.css("height",x)}else if("height"in i){var C=i.height;b.parent().css("height",C),b.css("height",C)}if("scrollTo"in i)w=parseInt(s.scrollTo);else if("scrollBy"in i)w+=parseInt(s.scrollBy);else if("destroy"in i)return T.remove(),D.remove(),void b.unwrap();o(w,!1,!0)}}else if(!(e.isPlainObject(i)&&"destroy"in i)){s.height="auto"==s.height?b.parent().height():s.height;var k=e(v).addClass(s.wrapperClass).css({position:"relative",overflow:"hidden",width:s.width,height:s.height});b.css({overflow:"hidden",width:s.width,height:s.height});var D=e(v).addClass(s.railClass).css({width:s.size,height:"100%",position:"absolute",top:0,display:s.alwaysVisible&&s.railVisible?"block":"none","border-radius":s.railBorderRadius,background:s.railColor,opacity:s.railOpacity,zIndex:90}),T=e(v).addClass(s.barClass).css({background:s.color,width:s.size,position:"absolute",top:0,opacity:s.opacity,display:s.alwaysVisible?"block":"none","border-radius":s.borderRadius,BorderRadius:s.borderRadius,MozBorderRadius:s.borderRadius,WebkitBorderRadius:s.borderRadius,zIndex:99}),S="right"==s.position?{right:s.distance}:{left:s.distance};D.css(S),T.css(S),b.wrap(k),b.parent().append(T),b.parent().append(D),s.railDraggable&&T.bind("mousedown",function(i){var n=e(document);return h=!0,t=parseFloat(T.css("top")),pageY=i.pageY,n.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY,T.css("top",currTop),o(0,T.position().top,!1)}),n.bind("mouseup.slimscroll",function(t){h=!1,l(),n.unbind(".slimscroll")}),!1}).bind("selectstart.slimscroll",function(t){return t.stopPropagation(),t.preventDefault(),!1}),D.hover(function(){a()},function(){l()}),T.hover(function(){c=!0},function(){c=!1}),b.hover(function(){u=!0,a(),l()},function(){u=!1,l()}),b.bind("touchstart",function(t,e){t.originalEvent.touches.length&&(p=t.originalEvent.touches[0].pageY)}),b.bind("touchmove",function(t){if(y||t.originalEvent.preventDefault(),t.originalEvent.touches.length){o((p-t.originalEvent.touches[0].pageY)/s.touchScrollStep,!0),p=t.originalEvent.touches[0].pageY}}),r(),"bottom"===s.start?(T.css({top:b.outerHeight()-T.outerHeight()}),o(0,!0)):"top"!==s.start&&(o(e(s.start).position().top,null,!0),s.alwaysVisible||T.hide()),function(t){window.addEventListener?(t.addEventListener("DOMMouseScroll",n,!1),t.addEventListener("mousewheel",n,!1)):document.attachEvent("onmousewheel",n)}(this)}}),this}}),e.fn.extend({slimscroll:e.fn.slimScroll})}(jQuery),function(t,e){"use strict";t.ajaxPrefilter(function(t,e,i){if(t.iframe)return t.originalURL=t.url,"iframe"}),t.ajaxTransport("iframe",function(e,i,n){function s(){l.each(function(e,i){var n=t(i);n.data("clone").replaceWith(n)}),o.remove(),r.one("load",function(){r.remove()}),r.attr("src","javascript:false;")}var o=null,r=null,a="iframe-"+t.now(),l=t(e.files).filter(":file:enabled"),u=null;if(e.dataTypes.shift(),e.data=i.data,l.length)return o=t("").hide().attr({action:e.originalURL,target:a}),"string"==typeof e.data&&e.data.length>0&&t.error("data must not be serialized"),t.each(e.data||{},function(e,i){t.isPlainObject(i)&&(e=i.name,i=i.value),t("").attr({name:e,value:i}).appendTo(o)}),t("").appendTo(o),u=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+("*"!==e.dataTypes[0]?", */*; q=0.01":""):e.accepts["*"],t("").attr("value",u).appendTo(o),l.after(function(e){var i=t(this),n=i.clone().prop("disabled",!0);return i.data("clone",n),n}).next(),l.appendTo(o),{send:function(e,i){r=t(""),r.one("load",function(){r.one("load",function(){var t=this.contentWindow?this.contentWindow.document:this.contentDocument?this.contentDocument:this.document,e=t.documentElement?t.documentElement:t.body,n=e.getElementsByTagName("textarea")[0],o=n&&n.getAttribute("data-type")||null,r=n&&n.getAttribute("data-status")||200,a=n&&n.getAttribute("data-statusText")||"OK",l={html:e.innerHTML,text:o?n.value:e?e.textContent||e.innerText:null};s(),i(r,a,l,o?"Content-Type: "+o:null)}),o[0].submit()}),t("body").append(o,r)},abort:function(){null!==r&&(r.unbind("load").attr("src","javascript:false;"),s())}}})}(jQuery),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widget"],t):"object"==typeof exports?t(require("jquery"),require("./vendor/jquery.ui.widget")):t(window.jQuery)}(function(t){"use strict";function e(e){var i="dragover"===e;return function(n){n.dataTransfer=n.originalEvent&&n.originalEvent.dataTransfer;var s=n.dataTransfer;s&&-1!==t.inArray("Files",s.types)&&!1!==this._trigger(e,t.Event(e,{delegatedEvent:n}))&&(n.preventDefault(),i&&(s.dropEffect="copy"))}}t.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||t('').prop("disabled")),t.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),t.support.xhrFormDataFileUpload=!!window.FormData,t.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),t.widget("blueimp.fileupload",{options:{dropZone:t(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(e,i){return e=this.messages[e]||e.toString(),i&&t.each(i,function(t,i){e=e.replace("{"+t+"}",i)}),e},formData:function(t){return t.serializeArray()},add:function(e,i){if(e.isDefaultPrevented())return!1;(i.autoUpload||!1!==i.autoUpload&&t(this).fileupload("option","autoUpload"))&&i.process().done(function(){i.submit()})},processData:!1,contentType:!1,cache:!1,timeout:0},_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:t.support.blobSlice&&function(){return(this.slice||this.webkitSlice||this.mozSlice).apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(t,e,i){var n=t-this.timestamp;return(!this.bitrate||!i||n>i)&&(this.bitrate=(e-this.loaded)*(1e3/n)*8,this.loaded=e,this.timestamp=t),this.bitrate}},_isXHRUpload:function(e){return!e.forceIframeTransport&&(!e.multipart&&t.support.xhrFileUpload||t.support.xhrFormDataFileUpload)},_getFormData:function(e){var i;return"function"===t.type(e.formData)?e.formData(e.form):t.isArray(e.formData)?e.formData:"object"===t.type(e.formData)?(i=[],t.each(e.formData,function(t,e){i.push({name:t,value:e})}),i):[]},_getTotal:function(e){var i=0;return t.each(e,function(t,e){i+=e.size||1}),i},_initProgressObject:function(e){var i={loaded:0,total:0,bitrate:0};e._progress?t.extend(e._progress,i):e._progress=i},_initResponseObject:function(t){var e;if(t._response)for(e in t._response)t._response.hasOwnProperty(e)&&delete t._response[e];else t._response={}},_onProgress:function(e,i){if(e.lengthComputable){var n,s=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&s-i._timeThis will break things in weird and horrible ways. Edit this asset now to assign it a model.
+