diff --git a/README.md b/README.md index 72377ab..78e6e6d 100644 --- a/README.md +++ b/README.md @@ -44,13 +44,19 @@ Start package installation by running instal command below: php artisan laravel-admin:instal ``` +If our package update throws composer, please update dependency running commend below: + +```php +php artisan laravel-admin:update +``` + Note that this installation uses migrations, so you must run it from machine that has access to your database. For instance, if you use Vagrant, you will have to do `vagrant ssh` first, go to your project directory, and run this instal command. The same way you run your standard Laravel's migration command. ## Usage -TODO +Visit [wiki](https://github.com/systeminc/laravel-admin/wiki/Blog) ## Contributing diff --git a/src/Blog.php b/src/Blog.php index b434453..622bab4 100644 --- a/src/Blog.php +++ b/src/Blog.php @@ -24,9 +24,13 @@ public function __get($key) * * @return type */ - public function posts() + public function posts($url_key = false) { - return new BlogPost(); + if ($url_key) { + return BlogPost::whereUriId($url_key)->first(); + } else { + return new BlogPost(); + } } /** diff --git a/src/BlogCategory.php b/src/BlogCategory.php index 7847da9..1efbe64 100644 --- a/src/BlogCategory.php +++ b/src/BlogCategory.php @@ -13,7 +13,7 @@ class BlogCategory extends Model 'excerpt', 'description', 'menu_order', - 'uri', + 'slug', 'seo_title', 'seo_description', 'seo_keywords', diff --git a/src/BlogPost.php b/src/BlogPost.php index 469a746..6022901 100644 --- a/src/BlogPost.php +++ b/src/BlogPost.php @@ -8,7 +8,7 @@ class BlogPost extends Model { protected $fillable = [ 'blog_category_id', - 'uri_id', + 'slug', 'title', 'thumb', 'content', diff --git a/src/BlogPostComment.php b/src/BlogPostComment.php index d4b2460..d8c3d2f 100644 --- a/src/BlogPostComment.php +++ b/src/BlogPostComment.php @@ -14,7 +14,7 @@ class BlogPostComment extends Model 'approved', ]; - public function article() + public function post() { return $this->belongsTo('SystemInc\LaravelAdmin\BlogPost', 'blog_post_id'); } diff --git a/src/Console/UpdateCommand.php b/src/Console/UpdateCommand.php index 785b377..8dc7e2f 100644 --- a/src/Console/UpdateCommand.php +++ b/src/Console/UpdateCommand.php @@ -57,29 +57,18 @@ public function handle() $this->line(''); $this->line('Updating Configuration...'); - $config_changed = false; - - $config = require __DIR__.'/../config/laravel-admin.php'; - $config_file = File::get(__DIR__.'/../config/laravel-admin.php'); - + $package_config = require __DIR__.'/../config/laravel-admin.php'; $client_config = require base_path('config/laravel-admin.php'); - foreach (config('laravel-admin') as $key => $value) { - $config_file = str_replace($config[$key], $value, $config_file); + $replaceConfig = array_replace_recursive(require __DIR__.'/../config/laravel-admin.php', config('laravel-admin')); - //CHECK IS CONFIG MERGE WITH CLIENT - if (!isset($client_config[$key]) && !$config_changed) { - $config_changed = true; + foreach ($package_config as $key => $value) { + if (!isset($client_config[$key])) { + File::put(base_path('config/laravel-admin.php'), ("info('Config file ("config/laravel-admin.php") is merged, please see changes for new feature'); } } - File::put(base_path('config/laravel-admin.php'), $config_file); - - //IF CONFIG ARE MERGE WARM USER - if ($config_changed) { - $this->info('Config file ("config/laravel-admin.php") is merged, please see changes for new feature'); - } - $this->line('Updating Configuration Done!'); $this->line(''); $this->line('***'); diff --git a/src/Http/Controllers/Blog/BlogController.php b/src/Http/Controllers/Blog/BlogController.php index ef97049..b4b4bbc 100644 --- a/src/Http/Controllers/Blog/BlogController.php +++ b/src/Http/Controllers/Blog/BlogController.php @@ -43,7 +43,7 @@ public function getPostNew(Request $request) { $post = new BlogPost(); $post->title = 'New Article'; - $post->uri_id = 'new-post-'.time(); + $post->slug = 'new-post-'.time(); $post->save(); return redirect($request->segment(1).'/blog/post-edit/'.$post->id); @@ -87,6 +87,7 @@ public function postSave(Request $request, $post_id) $post->thumb = null; } + $post->slug = str_slug($request->slug); $post->save(); return redirect($request->segment(1).'/blog/post-edit/'.$post->id)->with('success', 'Saved successfully'); diff --git a/src/Http/Controllers/Blog/CategoriesController.php b/src/Http/Controllers/Blog/CategoriesController.php index d0ac9ae..3cf99ae 100644 --- a/src/Http/Controllers/Blog/CategoriesController.php +++ b/src/Http/Controllers/Blog/CategoriesController.php @@ -89,9 +89,8 @@ public function postSave(Request $request, $category_id) $category->thumb = null; } - //REPLACE URI - $uri = strtolower($request->title); - $category->uri = str_replace(' ', '-', $uri); + //REPLACE slug + $category->slug = str_slug($request->title); $category->save(); diff --git a/src/Http/Controllers/PagesController.php b/src/Http/Controllers/PagesController.php index abf545a..7d024d2 100644 --- a/src/Http/Controllers/PagesController.php +++ b/src/Http/Controllers/PagesController.php @@ -75,7 +75,7 @@ public function postSave(Request $request) } $page->elements_prefix = $this->sanitizeElements($request->elements_prefix); - $page->uri_key = $this->sanitizeUri($request->uri_key); + $page->slug = str_slug($request->slug); $page->save(); @@ -119,7 +119,7 @@ public function postUpdate(Request $request, $page_id) $page->fill($data); $page->elements_prefix = $elements_prefix; - $page->uri_key = $this->sanitizeUri($request->uri_key); + $page->slug = str_slug($request->slug); $page->save(); diff --git a/src/Http/Controllers/Places/LocationsController.php b/src/Http/Controllers/Places/LocationsController.php index 72954bc..da3403f 100644 --- a/src/Http/Controllers/Places/LocationsController.php +++ b/src/Http/Controllers/Places/LocationsController.php @@ -75,7 +75,7 @@ public function postSave(Request $request) $location->map_id = null; } - $location->key = $this->sanitizeUri($request->key); + $location->key = str_slug($request->key); $location->save(); return redirect(config('laravel-admin.route_prefix').'/places/locations')->with('success', 'Saved successfully'); @@ -119,15 +119,23 @@ public function postUpdate(Request $request, $location_id) $location = Location::find($location_id); $location->fill($data); - $location->image = $this->saveImage($request->file('image'), 'locations'); - $location->thumb_image = $this->saveImage($request->file('thumb_image'), 'locations/thumb'); - $location->marker_image = $this->saveImage($request->file('marker_image'), 'locations/marker'); + if ($request->hasFile('image')) { + $location->image = $this->saveImage($request->file('image'), 'locations'); + } + + if ($request->hasFile('thumb_image')) { + $location->thumb_image = $this->saveImage($request->file('thumb_image'), 'locations/thumb'); + } + + if ($request->hasFile('marker_image')) { + $location->marker_image = $this->saveImage($request->file('marker_image'), 'locations/marker'); + } if ($request->map_id == 0) { $location->map_id = null; } - $location->key = $this->sanitizeUri($request->key); + $location->key = str_slug($request->key); if ($request->input('delete_image')) { if (Storage::exists($location->image)) { diff --git a/src/Http/Controllers/Places/MapsController.php b/src/Http/Controllers/Places/MapsController.php index bbcf214..6a4035c 100644 --- a/src/Http/Controllers/Places/MapsController.php +++ b/src/Http/Controllers/Places/MapsController.php @@ -63,7 +63,7 @@ public function postSave(Request $request) $map = new Map(); $map->fill($data); - $map->key = $this->sanitizeUri($request->key); + $map->key = str_slug($request->key); $map->save(); return redirect(config('laravel-admin.route_prefix').'/places/maps')->with('success', 'Saved successfully'); @@ -105,7 +105,7 @@ public function postUpdate(Request $request, $map_id) $map = Map::find($map_id); $map->fill($data); - $map->key = $this->sanitizeUri($request->key); + $map->key = str_slug($request->key); $map->save(); return back()->with('success', 'Saved successfully'); diff --git a/src/Http/Controllers/Shop/CategoriesController.php b/src/Http/Controllers/Shop/CategoriesController.php index daffa03..dd14e73 100644 --- a/src/Http/Controllers/Shop/CategoriesController.php +++ b/src/Http/Controllers/Shop/CategoriesController.php @@ -89,9 +89,8 @@ public function postSave(Request $request, $category_id) $category->thumb = null; } - //REPLACE URI - $uri = strtolower($request->title); - $category->uri = str_replace(' ', '-', $uri); + //REPLACE slug + $category->slug = str_slug($request->title); $category->save(); diff --git a/src/Http/Controllers/Shop/OrdersController.php b/src/Http/Controllers/Shop/OrdersController.php index cdcbc5b..4ecab41 100644 --- a/src/Http/Controllers/Shop/OrdersController.php +++ b/src/Http/Controllers/Shop/OrdersController.php @@ -79,14 +79,14 @@ public function postSave(Request $request, $order_id) $order->update($request->all()); - if (empty($request->input('valid_until'))) { + if (empty($request->valid_until)) { $order->valid_until = null; } - if (empty($request->input('date_of_purchase'))) { + if (empty($request->date_of_purchase)) { $order->date_of_purchase = null; } - if (empty($request->get('show_shipping_address'))) { + if (empty($request->show_shipping_address)) { $order->show_shipping_address = 0; } @@ -115,12 +115,19 @@ public function postSave(Request $request, $order_id) public function postAddItem(Request $request, $order_id) { $order = Order::find($order_id); - $product = Product::find($request->input('product_id')); + $product = Product::find($request->product_id); - $item = OrderItem::create([ - 'order_id' => $order->id, - 'product_id' => $product->id, + $item = OrderItem::whereProductId($request->product_id)->first(); + + if ($item) { + $item->quantity += 1; + } else { + $item = OrderItem::create([ + 'order_id' => $order->id, + 'product_id' => $product->id, + 'custom_price' => 0, ]); + } $item->save(); @@ -161,9 +168,9 @@ public function postEditItem(Request $request, $item_id) { $item = OrderItem::find($item_id); - $item->quantity = $request->input('quantity'); - $item->discount = $request->input('discount'); - $item->custom_price = $request->input('custom_price'); + $item->quantity = $request->quantity; + $item->discount = $request->discount; + $item->custom_price = $request->custom_price; $item->save(); diff --git a/src/Http/Controllers/Shop/ProductsController.php b/src/Http/Controllers/Shop/ProductsController.php index ea67e3f..c81d934 100644 --- a/src/Http/Controllers/Shop/ProductsController.php +++ b/src/Http/Controllers/Shop/ProductsController.php @@ -38,6 +38,7 @@ public function getNew(Request $request) { $product = new Product(); $product->title = 'New product'; + $product->slug = 'new-product-'.time(); $product->save(); $gallery = new Gallery(); @@ -80,7 +81,7 @@ public function getEdit($product_id) public function postSave(Request $request, $product_id) { // validation - $validation = Validator::make($request->all(), ProductValidation::rules(), ProductValidation::messages()); + $validation = Validator::make($request->all(), ProductValidation::rules($product_id), ProductValidation::messages()); if ($validation->fails()) { return back()->withInput()->withErrors($validation); @@ -121,6 +122,7 @@ public function postSave(Request $request, $product_id) } $product->pdf = null; } + $product->slug = str_slug($request->slug); $product->save(); return redirect($request->segment(1).'/shop/products/edit/'.$product->id)->with('success', 'Saved successfully'); diff --git a/src/Location.php b/src/Location.php index fd6223c..634fc2a 100644 --- a/src/Location.php +++ b/src/Location.php @@ -8,6 +8,7 @@ class Location extends Model { protected $fillable = [ 'title', + 'url', 'key', 'map_id', 'description', diff --git a/src/Map.php b/src/Map.php index 3c11873..b5c7aaf 100644 --- a/src/Map.php +++ b/src/Map.php @@ -15,7 +15,7 @@ class Map extends Model 'longitude', ]; - public function location() + public function locations() { return $this->hasMany('SystemInc\LaravelAdmin\Location', 'map_id'); } diff --git a/src/OrderItem.php b/src/OrderItem.php index 7190862..b767228 100644 --- a/src/OrderItem.php +++ b/src/OrderItem.php @@ -8,7 +8,13 @@ class OrderItem extends Model { public $timestamps = false; - protected $fillable = ['product_id', 'quantity']; + protected $fillable = [ + 'order_id', + 'product_id', + 'quantity', + 'discount', + 'custom_price', + ]; public function order() { diff --git a/src/Page.php b/src/Page.php index 161f068..d2cce3d 100644 --- a/src/Page.php +++ b/src/Page.php @@ -12,7 +12,7 @@ class Page extends Model protected $fillable = [ 'title', 'elements_prefix', - 'uri_key', + 'slug', 'description', 'keyword', 'parent_id', @@ -36,7 +36,7 @@ public function menu() public function tree() { - $pages = self::whereParentId(null)->orderBy('order_number')->get(['id', 'title', 'uri_key']); + $pages = self::whereParentId(null)->orderBy('order_number')->get(['id', 'title', 'slug']); $tree = []; @@ -59,19 +59,19 @@ private function getTreeBranch() return [ 'id' => $this->id, 'title' => $this->title, - 'uri_key' => $this->uri_key, + 'slug' => $this->slug, 'subpages' => $tree, ]; } public function subpages() { - return $this->whereParentId($this->id)->get(['id', 'title', 'uri_key']); + return $this->whereParentId($this->id)->get(['id', 'title', 'slug']); } public function child($parent_id) { - $pages = self::whereParentId($parent_id)->orderBy('order_number')->get(['id', 'title', 'uri_key']); + $pages = self::whereParentId($parent_id)->orderBy('order_number')->get(['id', 'title', 'slug']); $tree = []; diff --git a/src/Product.php b/src/Product.php index 01d5007..94987c5 100644 --- a/src/Product.php +++ b/src/Product.php @@ -15,7 +15,7 @@ class Product extends Model 'product_category_id', 'brand_id', 'title', - 'url_id', + 'slug', 'excerpt', 'description', 'long_description', diff --git a/src/ProductCategory.php b/src/ProductCategory.php index c8efb4f..27b603f 100644 --- a/src/ProductCategory.php +++ b/src/ProductCategory.php @@ -13,7 +13,7 @@ class ProductCategory extends Model 'excerpt', 'description', 'menu_order', - 'uri', + 'slug', 'seo_title', 'seo_description', 'seo_keywords', diff --git a/src/Subscribe.php b/src/Subscribe.php index 982ff70..3a82f3a 100644 --- a/src/Subscribe.php +++ b/src/Subscribe.php @@ -20,11 +20,13 @@ public function subscribe(Request $request) $setting = LeadSetting::first(); - Mail::send('admin::mail.welcome', ['setting' => $setting], function ($m) use ($subscriber, $setting, $request) { - $m->from('noreply@'.$setting->mailer_name, $setting->mailer_name); + if (!empty($request->email) && !empty($request->full_name)) { + Mail::send('admin::mail.welcome', ['setting' => $setting], function ($m) use ($subscriber, $setting, $request) { + $m->from('noreply@'.$setting->mailer_name, $setting->mailer_name); - $m->to($request->email, $request->full_name)->subject($setting->thank_you_subject); - }); + $m->to($request->email, $request->full_name)->subject($setting->thank_you_subject); + }); + } return true; } diff --git a/src/Traits/HelpersTrait.php b/src/Traits/HelpersTrait.php index 2368315..70566b4 100644 --- a/src/Traits/HelpersTrait.php +++ b/src/Traits/HelpersTrait.php @@ -7,16 +7,6 @@ trait HelpersTrait { - public function sanitizeUri($uri) - { - return trim(strtolower(preg_replace(['/[^a-zA-Z0-9-\/]/', '/\/+/', '/-+/'], ['', '/', '-'], $uri)), '/-'); - } - - public function sanitizeUriKey($uri_key) - { - return trim(strtolower(preg_replace(['/[^a-zA-Z0-9-]/', '/-+/'], ['', '-'], $uri_key)), '-'); - } - public function sanitizeElements($element) { return trim(strtolower(preg_replace('/[^a-zA-Z0-9_]/', '', $element)), '_'); @@ -24,7 +14,7 @@ public function sanitizeElements($element) public function generateNestedPageList($pages, $navigation = '') { - $navigation .= '