From 590e1eeacad62e77f8bbea435aa98036c5f64121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 31 Mar 2016 22:39:38 +0200 Subject: [PATCH 01/13] FEATURE #1423: add uploading of title photo for content pages --- .../Controllers/Admin/CreateNewContent.php | 31 ++++++- app/Http/Controllers/Admin/EditContent.php | 20 ++++- app/Http/Requests/CreateNewContentRequest.php | 18 ++-- app/Models/File.php | 24 +++--- ...8_ChangeContentTitleImageIdForFilename.php | 86 +++++++++++++++++++ resources/assets/css/admin.css | 4 + resources/lang/en/admin/contents.php | 3 +- resources/lang/en/admin/history.php | 37 ++++---- .../views/admin/content/editForm.blade.php | 2 +- .../content/formParts/appearance.blade.php | 23 +++++ .../formParts/basicInformation.blade.php | 5 +- .../views/admin/content/newForm.blade.php | 2 +- 12 files changed, 204 insertions(+), 51 deletions(-) create mode 100644 database/migrations/2016_03_31_192238_ChangeContentTitleImageIdForFilename.php diff --git a/app/Http/Controllers/Admin/CreateNewContent.php b/app/Http/Controllers/Admin/CreateNewContent.php index 10e1c17e..48697d0e 100644 --- a/app/Http/Controllers/Admin/CreateNewContent.php +++ b/app/Http/Controllers/Admin/CreateNewContent.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin; use App\Enumerations\ActiveContentStatuses; use App\Http\Requests\CreateNewContentRequest; use App\Models\Content; +use App\Models\File; use App\Models\Module; use App\Models\Template; use Illuminate\Support\Str; @@ -11,6 +12,22 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class CreateNewContent extends Controller { + /** + * @var File + */ + private $file; + /** + * @var Content + */ + private $content; + + public function __construct(File $file, Content $content) + { + parent::__construct(); + $this->file = $file; + $this->content = $content; + } + /** * Display form for new content page * @@ -29,16 +46,15 @@ class CreateNewContent extends Controller ->get(); // create default content object - $page = new Content(); - $page->status = Content::STATUS_DRAFT; + $this->content->status = Content::STATUS_DRAFT; // render view return view('admin.content.new', [ 'contentStatuses' => $statuses, 'templates' => $templates, 'moduleId' => $moduleId, - 'page' => $page, - 'rootPages' => $page->rootPages(), + 'page' => $this->content, + 'rootPages' => $this->content->rootPages(), 'moduleName' => trans($module->name), 'formSectionNames' => call_user_func([$module->handler, 'getExtendedFormSections']), 'formSections' => call_user_func([$module->handler, 'getExtendedFormInputsCreate']), @@ -82,6 +98,13 @@ class CreateNewContent extends Controller $page->parent_id = $request->parentPage; } + // upload file - if provided + if ($request->hasFile('titlePhoto')) { + $file = $this->file->upload($request->file('titlePhoto'), $request); + + $page->title_photo = $file['filename']; + } + // save module-specific stuff call_user_func_array([$module->handler, 'createNew'], [&$page, $request]); diff --git a/app/Http/Controllers/Admin/EditContent.php b/app/Http/Controllers/Admin/EditContent.php index c6e22d7d..2acab439 100644 --- a/app/Http/Controllers/Admin/EditContent.php +++ b/app/Http/Controllers/Admin/EditContent.php @@ -6,9 +6,9 @@ use App\Enumerations\ModulesHandlerToId; use App\Http\Requests\EditContentRequest; use App\Models\Content; use App\Models\ContentHistory; +use App\Models\File; use App\Models\Template; use Illuminate\Support\Str; -use Modules\StaticPages\Http\Requests\EditStaticPageRequest; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class EditContent extends Controller @@ -17,10 +17,15 @@ class EditContent extends Controller * @var ContentHistory */ private $history; + /** + * @var File + */ + private $file; - public function __construct(ContentHistory $history) + public function __construct(ContentHistory $history, File $file) { $this->history = $history; + $this->file = $file; } /** @@ -81,6 +86,14 @@ class EditContent extends Controller $request->url = Str::slug($request->url); $request->parentPage = $request->parentPage ? $request->parentPage : null; + $request->titlePhotoFilename = $page->title_photo; + + // upload file - if provided + if ($request->hasFile('titlePhoto')) { + $file = $this->file->upload($request->file('titlePhoto'), $request); + + $request->titlePhotoFilename = $file['filename']; + } // array of fields in database and fields from request $fields = [ @@ -93,7 +106,8 @@ class EditContent extends Controller 'meta_description' => 'metaDescription', 'content' => 'pageContent', 'parent_id' => 'parentPage', - 'status' => 'status' + 'status' => 'status', + 'title_photo' => 'titlePhotoFilename' ]; // save new values with history diff --git a/app/Http/Requests/CreateNewContentRequest.php b/app/Http/Requests/CreateNewContentRequest.php index 3d995ba6..7284b6ae 100644 --- a/app/Http/Requests/CreateNewContentRequest.php +++ b/app/Http/Requests/CreateNewContentRequest.php @@ -12,15 +12,15 @@ class CreateNewContentRequest extends Request public function rules() { return [ - 'title' => 'required', - 'url' => 'required|unique:contents,url', - 'template' => 'required|exists:templates,template_name', - 'published_from' => 'date', - 'published_to' => 'date', - 'title_photo' => 'exists:files,id', - 'module_settings' => 'json', - 'status' => 'required|in:draft,protected,public', - 'parentPage' => 'exists:contents,id' + 'titlePhoto' => 'image', + 'title' => 'required', + 'url' => 'required|unique:contents,url', + 'template' => 'required|exists:templates,template_name', + 'status' => 'required|in:draft,protected,public', + 'title_photo' => 'exists:files,id', + 'parentPage' => 'exists:contents,id', + 'published_from' => 'date', + 'published_to' => 'date', ]; } } diff --git a/app/Models/File.php b/app/Models/File.php index 447950ff..a5962fd6 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Events\UploadFile; -use App\Http\Requests\UploadRequest; +use App\Http\Requests\Request; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Event; @@ -49,13 +49,13 @@ class File extends Model /** * Saves file into FS and creates new record in database * - * @param UploadedFile $file - * @param UploadRequest $request + * @param UploadedFile $file + * @param Request $request * * @return array associative array - key 'file' is type of SymphonyFile and contains info about real file, key 'id' * is ID of row in files table */ - public function upload(UploadedFile $file, UploadRequest $request) + public function upload(UploadedFile $file, Request $request) { $destination = config('app.upload_path'); $filename = $this->getFilename($file); @@ -70,8 +70,9 @@ class File extends Model Event::fire(new UploadFile($uploadedFile, $id)); return [ - 'file' => $file, - 'id' => $id + 'filename' => $filename, + 'file' => $file, + 'id' => $id ]; } @@ -81,12 +82,12 @@ class File extends Model * This file saves new record into database. It also calculates hash of given file, obtains MIME type etc. * * @param SymphonyFile $file - * @param UploadRequest $request + * @param Request $request * @param $originalFilename * * @return mixed */ - protected function saveIntoDatabase(SymphonyFile $file, UploadRequest $request, $originalFilename) + protected function saveIntoDatabase(SymphonyFile $file, Request $request, $originalFilename) { // get path and hash of uploaded file $path = config('app.upload_path') . DIRECTORY_SEPARATOR . $file->getFilename(); @@ -101,13 +102,14 @@ class File extends Model $newFile->hash_algorithm = self::HASH_ALGORITHM; $newFile->mime_type = $file->getMimeType(); $newFile->file_size = $file->getSize(); - $newFile->directory_id = $request->directoryId; // save optional fields - $optionalFields = ['description', 'keywords']; + $optionalFields = ['description', 'keywords', 'directoryId']; foreach ($optionalFields as $field) { if ($request->has($field)) { - $newFile->$field = $request->$field; + + $snakeField = snake_case($field); + $newFile->$snakeField = $request->$field; } } diff --git a/database/migrations/2016_03_31_192238_ChangeContentTitleImageIdForFilename.php b/database/migrations/2016_03_31_192238_ChangeContentTitleImageIdForFilename.php new file mode 100644 index 00000000..2d04429b --- /dev/null +++ b/database/migrations/2016_03_31_192238_ChangeContentTitleImageIdForFilename.php @@ -0,0 +1,86 @@ +dropForeign('fk_content_file1'); + }); + } catch (\Illuminate\Database\QueryException $e) { + // probably foreign does not exist, try to remove one from migration + + try { + Schema::table('contents', function (Blueprint $table) { + $table->dropForeign('contents_title_photo_foreign'); + }); + } catch (\Illuminate\Database\QueryException $ex) { + // ignore this error + } + } + + // force Doctrine to consider enum type as string + $platform = Schema::getConnection() + ->getDoctrineSchemaManager() + ->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('enum', 'string'); + + Schema::table('contents', function (Blueprint $table) { + $table->string('title_photo', 128) + ->nullable() + ->default(null) + ->comment('This photo is supposed to be displayed e.g. on list of all pages.') + ->change(); + + $table->foreign('title_photo') + ->references('filename') + ->on('files') + ->onUpdate('cascade') + ->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // force Doctrine to consider enum type as string + $platform = Schema::getConnection() + ->getDoctrineSchemaManager() + ->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('enum', 'string'); + + // delete all title photos + DB::statement('UPDATE contents SET title_photo = NULL'); + + Schema::table('contents', function (Blueprint $table) { + $table->dropForeign('contents_title_photo_foreign'); + }); + + Schema::table('contents', function (Blueprint $table) { + $table->integer('title_photo', false) + ->change(); + }); + + Schema::table('contents', function (Blueprint $table) { + $table->foreign('title_photo') + ->references('id') + ->on('files'); + }); + } +} diff --git a/resources/assets/css/admin.css b/resources/assets/css/admin.css index cddaaff2..c5b041ba 100644 --- a/resources/assets/css/admin.css +++ b/resources/assets/css/admin.css @@ -127,6 +127,10 @@ code { font-size: 80%; } +#appearance .title-photo img { + max-height: 10em; +} + .red { color: red; } diff --git a/resources/lang/en/admin/contents.php b/resources/lang/en/admin/contents.php index 2f6175fd..40ebb560 100644 --- a/resources/lang/en/admin/contents.php +++ b/resources/lang/en/admin/contents.php @@ -36,5 +36,6 @@ return [ 'overview' => 'List of all content pages', 'homepageSetup' => 'Homepage successfully set up.', 'setHomepage' => 'Set page as homepage', - 'noParentPage' => ' -- No parent page -- ' + 'noParentPage' => ' -- No parent page -- ', + 'uploadTitleImage' => 'Upload title image' ]; \ No newline at end of file diff --git a/resources/lang/en/admin/history.php b/resources/lang/en/admin/history.php index 0f40784e..09632f62 100644 --- a/resources/lang/en/admin/history.php +++ b/resources/lang/en/admin/history.php @@ -1,22 +1,23 @@ 'History of :name', - 'columnPageContent' => 'Page content', - 'columnUrl' => 'URL', - 'columnTitle' => 'Title', - 'columnMetaKeywords' => 'Meta keywords', - 'columnMetaDescription' => 'Description', - 'columnStatus' => 'Page visibility', - 'columnTemplate' => 'Template', - 'columnIs_homepage' => 'Homepage', - 'columnParentPage' => 'Parent page', - 'emptyValue' => 'none', - 'changedFromTo' => 'Changed from :from to :to', - 'numOfChanges' => 'One change|:count changes', - 'diff' => 'Difference', - 'diffPageName' => 'Difference of :column', - 'backToOverview' => 'Back to history overview', - 'backToEdit' => 'Back to editation form', - 'setupAsHomepage' => 'Setup as homepage' + 'pageName' => 'History of :name', + 'columnPageContent' => 'Page content', + 'columnUrl' => 'URL', + 'columnTitle' => 'Title', + 'columnMetaKeywords' => 'Meta keywords', + 'columnMetaDescription' => 'Description', + 'columnStatus' => 'Page visibility', + 'columnTemplate' => 'Template', + 'columnIs_homepage' => 'Homepage', + 'columnParentPage' => 'Parent page', + 'columnTitlePhotoFilename' => 'Title photo', + 'emptyValue' => 'none', + 'changedFromTo' => 'Changed from :from to :to', + 'numOfChanges' => 'One change|:count changes', + 'diff' => 'Difference', + 'diffPageName' => 'Difference of :column', + 'backToOverview' => 'Back to history overview', + 'backToEdit' => 'Back to editation form', + 'setupAsHomepage' => 'Setup as homepage' ]; \ No newline at end of file diff --git a/resources/views/admin/content/editForm.blade.php b/resources/views/admin/content/editForm.blade.php index c2b46270..f0319dd6 100644 --- a/resources/views/admin/content/editForm.blade.php +++ b/resources/views/admin/content/editForm.blade.php @@ -10,7 +10,7 @@ @endif -
+ {!! csrf_field() !!} @include('admin.content.formInputs') diff --git a/resources/views/admin/content/formParts/appearance.blade.php b/resources/views/admin/content/formParts/appearance.blade.php index 4bab3aca..a3598d9c 100644 --- a/resources/views/admin/content/formParts/appearance.blade.php +++ b/resources/views/admin/content/formParts/appearance.blade.php @@ -1,3 +1,26 @@ +@if($page->title_photo) +
+
+ +
+
+@endif + + +
+
+ + @if (isset($errors) && $errors->has('titlePhoto')) +
+ {{ $errors->first('titlePhoto') }} +
+ @endif +
+
+
- @if (isset($errors) && $errors->has('status')) + @if (isset($errors) && $errors->has('parentPage'))
- {{ $errors->first('status') }} + {{ $errors->first('parentPage') }}
@endif
-
diff --git a/resources/views/admin/content/newForm.blade.php b/resources/views/admin/content/newForm.blade.php index 67efbec1..e7d516b6 100644 --- a/resources/views/admin/content/newForm.blade.php +++ b/resources/views/admin/content/newForm.blade.php @@ -10,7 +10,7 @@
@endif - + {!! csrf_field() !!} @include('admin.content.formInputs') From 6378d177530cbbd936f03fa65ee7bdd8ffe91c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 31 Mar 2016 22:56:31 +0200 Subject: [PATCH 02/13] FEATURE #1424: add title photo to list of all pages --- .../admin/content/overviewTiles.blade.php | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/resources/views/admin/content/overviewTiles.blade.php b/resources/views/admin/content/overviewTiles.blade.php index f353ac78..76f90c11 100644 --- a/resources/views/admin/content/overviewTiles.blade.php +++ b/resources/views/admin/content/overviewTiles.blade.php @@ -1,7 +1,12 @@ -
+
@forelse($pages as $page)
+ @if ($page->title_photo) + + @endif + +

{{$page->title}}

{{date('d.m.Y', strtotime($page->created_at))}} {{$page->author_name}} @@ -24,22 +29,36 @@ @if($page->is_homepage) @else - + @endif - + @if($page->status == \App\Models\Content::STATUS_DRAFT) - - + + @else - - + + @endif - +

-
@empty From 2b61709ade3ad2a86d155b1186bec9f40986fe30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 1 Apr 2016 01:59:16 +0200 Subject: [PATCH 03/13] FEATURE #1522: add orbit slider Had to change some things in global widgets management and also in html code widget. Sorry for this ugly commit.. --- .../Registrators/WidgetRegistrator.php | 6 +- .../Controllers/Admin/EditUploadedFile.php | 1 + app/Http/Controllers/Admin/EditWidget.php | 6 - app/Models/File.php | 2 +- app/Providers/AppServiceProvider.php | 2 + .../Exceptions/WidgetExistsException.php | 14 ++ app/Widgets/HtmlCode/Presenters/HtmlCode.php | 3 +- app/Widgets/OrbitSlider/OrbitSlider.php | 129 ++++++++++++++++++ .../OrbitSlider/Presenters/OrbitSlider.php | 56 ++++++++ ...30_MakeUserIdNotMandatoryInDirectories.php | 37 +++++ .../2016_03_31_225203_AddNameForFiles.php | 34 +++++ resources/lang/en/admin/fileManager.php | 1 + resources/lang/en/admin/widgets.php | 1 + resources/lang/en/widgets/orbitSlider.php | 15 ++ .../admin/fileManager/editForm.blade.php | 12 ++ .../admin/fileManager/newFileForm.blade.php | 13 ++ .../admin/widgets/htmlCode/editForm.blade.php | 4 +- .../admin/widgets/orbitSlider/edit.blade.php | 20 +++ .../widgets/orbitSlider/editForm.blade.php | 74 ++++++++++ .../admin/widgets/orbitSlider/new.blade.php | 10 ++ .../widgets/orbitSlider/newForm.blade.php | 69 ++++++++++ .../widgets/orbitSlider/element.blade.php | 20 +++ .../views/widgets/orbitSlider/image.blade.php | 5 + 23 files changed, 521 insertions(+), 13 deletions(-) create mode 100644 app/Widgets/Exceptions/WidgetExistsException.php create mode 100644 app/Widgets/OrbitSlider/OrbitSlider.php create mode 100644 app/Widgets/OrbitSlider/Presenters/OrbitSlider.php create mode 100644 database/migrations/2016_03_31_214730_MakeUserIdNotMandatoryInDirectories.php create mode 100644 database/migrations/2016_03_31_225203_AddNameForFiles.php create mode 100644 resources/lang/en/widgets/orbitSlider.php create mode 100644 resources/views/admin/widgets/orbitSlider/edit.blade.php create mode 100644 resources/views/admin/widgets/orbitSlider/editForm.blade.php create mode 100644 resources/views/admin/widgets/orbitSlider/new.blade.php create mode 100644 resources/views/admin/widgets/orbitSlider/newForm.blade.php create mode 100644 resources/views/widgets/orbitSlider/element.blade.php create mode 100644 resources/views/widgets/orbitSlider/image.blade.php diff --git a/app/Handlers/Registrators/WidgetRegistrator.php b/app/Handlers/Registrators/WidgetRegistrator.php index 36814493..e70cf9ee 100644 --- a/app/Handlers/Registrators/WidgetRegistrator.php +++ b/app/Handlers/Registrators/WidgetRegistrator.php @@ -38,9 +38,9 @@ class WidgetRegistrator 'name' => $widgetName, 'description' => $widgetDescription ]); - } - // install widget (if neccessary) - call_user_func($classname . '::install'); + // install widget (if neccessary) + call_user_func($classname . '::install'); + } } } diff --git a/app/Http/Controllers/Admin/EditUploadedFile.php b/app/Http/Controllers/Admin/EditUploadedFile.php index 99443df7..cac6bf5c 100644 --- a/app/Http/Controllers/Admin/EditUploadedFile.php +++ b/app/Http/Controllers/Admin/EditUploadedFile.php @@ -55,6 +55,7 @@ class EditUploadedFile extends Controller } // set values from form + $file->name = $request->name; $file->keywords = $request->keywords; $file->description = $request->description; $file->save(); diff --git a/app/Http/Controllers/Admin/EditWidget.php b/app/Http/Controllers/Admin/EditWidget.php index 7c407faf..34c0936e 100644 --- a/app/Http/Controllers/Admin/EditWidget.php +++ b/app/Http/Controllers/Admin/EditWidget.php @@ -12,12 +12,6 @@ class EditWidget extends Controller { $widget = Widget::findOrFail($id); - // decompose widget settings - $settings = json_decode($widget->settings); - - $widget->containerClass = $settings->containerClass; - $widget->code = $settings->code; - $presenter = call_user_func([$widget->widget_type_handler, 'getPresenter']); return call_user_func([$presenter, 'renderEditForm'], $widget); diff --git a/app/Models/File.php b/app/Models/File.php index a5962fd6..6ca591cd 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -104,7 +104,7 @@ class File extends Model $newFile->file_size = $file->getSize(); // save optional fields - $optionalFields = ['description', 'keywords', 'directoryId']; + $optionalFields = ['name', 'description', 'keywords', 'directoryId']; foreach ($optionalFields as $field) { if ($request->has($field)) { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 8cddb90f..2be6d206 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -12,6 +12,7 @@ use App\Handlers\Search\Presenters\AdminContent as AdminContentPresenter; use App\Handlers\Search\Presenters\AdminFiles; use App\Models\Template; use App\Widgets\HtmlCode\HtmlCode; +use App\Widgets\OrbitSlider\OrbitSlider; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\File; use Illuminate\Support\ServiceProvider; @@ -83,6 +84,7 @@ class AppServiceProvider extends ServiceProvider // register all available widgets $registrator->register(HtmlCode::class); + $registrator->register(OrbitSlider::class); } /** diff --git a/app/Widgets/Exceptions/WidgetExistsException.php b/app/Widgets/Exceptions/WidgetExistsException.php new file mode 100644 index 00000000..2cfa503a --- /dev/null +++ b/app/Widgets/Exceptions/WidgetExistsException.php @@ -0,0 +1,14 @@ + $message]); + + parent::__construct($message, $code, $previous); + } +} \ No newline at end of file diff --git a/app/Widgets/HtmlCode/Presenters/HtmlCode.php b/app/Widgets/HtmlCode/Presenters/HtmlCode.php index 71040ddf..1fa62590 100644 --- a/app/Widgets/HtmlCode/Presenters/HtmlCode.php +++ b/app/Widgets/HtmlCode/Presenters/HtmlCode.php @@ -47,6 +47,7 @@ class HtmlCode implements WidgetRenderer */ public static function renderEditForm(Widget $widget) { - return view('admin.widgets.htmlCode.edit', ['widget' => $widget]); + $settings = json_decode($widget->settings); + return view('admin.widgets.htmlCode.edit', ['widget' => $widget, 'settings' => $settings]); } } \ No newline at end of file diff --git a/app/Widgets/OrbitSlider/OrbitSlider.php b/app/Widgets/OrbitSlider/OrbitSlider.php new file mode 100644 index 00000000..0e065e4d --- /dev/null +++ b/app/Widgets/OrbitSlider/OrbitSlider.php @@ -0,0 +1,129 @@ +settings); + $parentDirectoryId = Storage::get(self::CONFIG_FILENAME); + $directoryId = isset($settings->directoryId) ? $settings->directoryId : null; + $edit = false; + + // check if directory does not exists + $exists = Directory::where('name', $request->name) + ->where('parent_id', $parentDirectoryId); + + if ($directoryId) { + $edit = true; + $exists = $exists->where('id', '!=', $directoryId); + } + + $exists = $exists->exists(); + + if ($exists) { + throw new WidgetExistsException($request->name); + } + + $directory = new Directory; + + if ($edit) { + $directory = Directory::find($directoryId); + } + + // setup some information about directory + $directory->user_id = Auth::user()->id; + $directory->parent_id = $parentDirectoryId; + $directory->name = $request->name; + $directory->description = $request->description; + $directory->save(); + + $settings = [ + 'directoryId' => $directory->id, + 'sliderClass' => isset($request->containerClass) ? $request->containerClass : '', + 'code' => $request->code + ]; + + $widget->settings = json_encode($settings); + + return $widget; + } + + /** + * Getter for presenter/renderer of this widget + * + * @return WidgetRenderer + */ + public static function getPresenter() + { + return Presenters\OrbitSlider::class; + } + + /** + * Function for installing given widget + * + * @return mixed + */ + public static function install() + { + $directory = Directory::where('name', self::DIRECTORY_NAME) + ->first(); + + if (!count($directory)) { + $directory = Directory::create([ + 'name' => self::DIRECTORY_NAME, + 'hidden' => true + ]); + } + + Storage::put(self::CONFIG_FILENAME, $directory->id); + } + + /** + * Function for uninstalling widget + */ + public static function uninstall() + { + // TODO: Implement uninstall() method. + } +} \ No newline at end of file diff --git a/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php b/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php new file mode 100644 index 00000000..5adb81d6 --- /dev/null +++ b/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php @@ -0,0 +1,56 @@ +directoryId; + + $images = File::where('directory_id', $directoryId) + ->where('mime_type', 'LIKE', 'image%') + ->get(); + + return view('widgets.orbitSlider.element', ['images' => $images, 'settings' => $settings]); + } + + /** + * Display form for creating new instance of widget + * + * @param WidgetType $type + * + * @return mixed + */ + public static function renderAddForm(WidgetType $type) + { + return view('admin.widgets.orbitSlider.new', ['type' => $type]); + } + + /** + * Display form for editing already existing widget + * + * @param Widget $widget + * + * @return mixed + */ + public static function renderEditForm(Widget $widget) + { + $settings = json_decode($widget->settings); + + return view('admin.widgets.orbitSlider.edit', ['widget' => $widget, 'settings' => $settings]); + } +} \ No newline at end of file diff --git a/database/migrations/2016_03_31_214730_MakeUserIdNotMandatoryInDirectories.php b/database/migrations/2016_03_31_214730_MakeUserIdNotMandatoryInDirectories.php new file mode 100644 index 00000000..7c719df2 --- /dev/null +++ b/database/migrations/2016_03_31_214730_MakeUserIdNotMandatoryInDirectories.php @@ -0,0 +1,37 @@ +integer('user_id', false) + ->nullable() + ->default(null) + ->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('directories', function (Blueprint $table) { + $table->integer('user_id', false) + ->nullable(false) + ->change(); + }); + } +} diff --git a/database/migrations/2016_03_31_225203_AddNameForFiles.php b/database/migrations/2016_03_31_225203_AddNameForFiles.php new file mode 100644 index 00000000..a4701e65 --- /dev/null +++ b/database/migrations/2016_03_31_225203_AddNameForFiles.php @@ -0,0 +1,34 @@ +string('name') + ->after('file_size') + ->comment('Some human readable name of file. May be used in different ways'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('files', function (Blueprint $table) { + $table->dropColumn('name'); + }); + } +} diff --git a/resources/lang/en/admin/fileManager.php b/resources/lang/en/admin/fileManager.php index 79d9adce..ad5c0b2d 100644 --- a/resources/lang/en/admin/fileManager.php +++ b/resources/lang/en/admin/fileManager.php @@ -20,6 +20,7 @@ return [ 'noFileSpecified' => 'You have not specified any file for upload', 'uploadSuccessfull' => 'Your file was successfully uploaded', 'selectFile' => 'Select file for upload', + 'name' => 'Name', 'keywords' => 'Keywords (comma separated)', 'description' => 'File description', 'noFiles' => 'No files were found. Try to upload some.', diff --git a/resources/lang/en/admin/widgets.php b/resources/lang/en/admin/widgets.php index f72053eb..b64cd259 100644 --- a/resources/lang/en/admin/widgets.php +++ b/resources/lang/en/admin/widgets.php @@ -21,5 +21,6 @@ return [ 'successfullyAssociated' => 'Association successfull', 'associationDoesNotExists' => 'This association does not exist', 'successfullyDeassociated' => 'Successfully removed from widget area', + 'widgetExists' => 'Widget :id already exists.' ]; \ No newline at end of file diff --git a/resources/lang/en/widgets/orbitSlider.php b/resources/lang/en/widgets/orbitSlider.php new file mode 100644 index 00000000..e9d1583b --- /dev/null +++ b/resources/lang/en/widgets/orbitSlider.php @@ -0,0 +1,15 @@ + 'Orbit slider', + 'widgetDescription' => 'Slider for images. Uses Foundation framework.', + 'name' => 'Slider name', + 'description' => 'Slider description', + 'containerClass' => 'Extra HTML class for slider', + 'createNew' => 'Create new', + 'new' => 'Create new orbit slider', + 'edit' => 'Edit slider :name', + 'editExisting' => 'Save', + 'preview' => 'Slider preview', + 'upload' => 'Add photos into slider', + 'code' => 'Some extra HTML/JS code for slider' +]; \ No newline at end of file diff --git a/resources/views/admin/fileManager/editForm.blade.php b/resources/views/admin/fileManager/editForm.blade.php index 999e4e0a..534ce58f 100644 --- a/resources/views/admin/fileManager/editForm.blade.php +++ b/resources/views/admin/fileManager/editForm.blade.php @@ -14,6 +14,18 @@ {!! csrf_field() !!} + +
@endif + + +