From ec5ad84b2be1cd2cdae3d15e4dc71908319e5f99 Mon Sep 17 00:00:00 2001
From: Tony Lea <tnylea@gmail.com>
Date: Tue, 2 Apr 2024 18:48:22 -0400
Subject: [PATCH] Adding updates to conditionally create the tables when
 loading the service provider

---
 README.md                     | 110 +++-------------------------------
 config/themes.php             |   3 +-
 src/ThemesServiceProvider.php |   2 +-
 3 files changed, 11 insertions(+), 104 deletions(-)

diff --git a/README.md b/README.md
index 581d3ec..0c42f7f 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,10 @@
-# Themes for Laravel & Voyager
+# DevDojo Themes Package
 
-This is a theme hook for voyager and the hook system
-
-![Voyager Themes Admin Page](https://i.imgur.com/uG78r50.png)
-
-## Installing the hook
-
-You can use the artisan command below to install this hook
-
-```bash
-php artisan hook:install voyager-themes
-```
+This is a package that will add theme support in your Laravel application
 
 ## Adding Themes
 
-The **voyager-themes** hook will look inside of the `resources/themes` folder for any folder that has a `.json` file inside of it with the same name. *(You can change the theme folder location in the config)*
+The **themes** package will look inside of the `resources/themes` folder for any folder that has a `.json` file inside of it with the same name. *(You can change the theme folder location in the config)*
 
 As an example if you have a folder called **sample-theme** and inside that folder you have another file called **sample-theme.json** with the following contents:
 
@@ -25,11 +15,11 @@ As an example if you have a folder called **sample-theme** and inside that folde
 }
 ```
 
-Voyager Themes will detect this as a new theme. You can also include a sample screenshot of your theme, which would be **sample-theme.jpg** *(800x500px) for best results*
+This package will detect this as a new theme. You can also include a sample screenshot of your theme, which would be **sample-theme.jpg** *(800x500px) for best results*
 
 In fact, you can checkout the sample-theme repo here: [https://github.com/thedevdojo/sample-theme](https://github.com/thedevdojo/sample-theme)
 
-You can activate this theme inside of Voyager and then when you want to tell your application which view to load you can use:
+You can activate this theme by setting the `active` column to 1 for that specific theme. Then use it like:
 
 ```
 return view('theme::welcome')
@@ -45,7 +35,7 @@ You may choose to publish a config to your project by running:
 php artisan vendor:publish
 ```
 
-You will want to publish the `voyager-themes-config`, and you will now see a new config located at `config/themes.php`, which will look like the following:
+You will want to publish the themes config, and you will now see a new config located at `config/themes.php`, which will look like the following:
 
 ```
 <?php
@@ -53,7 +43,8 @@ You will want to publish the `voyager-themes-config`, and you will now see a new
 return [
 
     'themes_folder' => resource_path('views/themes'),
-    'publish_assets' => true
+    'publish_assets' => true,
+    'create_tables' => true
 
 ];
 ```
@@ -62,88 +53,3 @@ Now, you can choose an alternate location for your themes folder. By default thi
 
 Additionally, you can set **publish_assets** to *true* or *false*, if it is set to *true* anytime the themes directory is scanned it will publish the `assets` folder in your theme to the public folder inside a new `themes` folder. Set this to *false* and this will no longer happen.
 
-## Theme Options
-
-You can also easily add a number of options by including another file in the theme folder called `options.blade.php`
-
-![Voyager Theme Options Page](https://i.imgur.com/eAoNt0W.png)
-
-Inside the `options.blade.php` file you can now add a new field as simple as:
-
-```
-{!! theme_field('text', 'title') !!}
-```
-
-This will now add a new **text field** and store it with a **key** of *title*. So, now if you wanted to reference this value anywhere in your theme files you can simple echo it out like so:
-
-```
-{{ theme('title') }}
-```
-
-Couldn't be easier, right!
-
-Take a look at all the following explanation of the `theme_field` function.
-
-### The theme_field() function
-
-The `theme_field()` function can be used to display fields in our theme options page. Take a look at the function DEFINITION, EXAMPLE, EXPLANATION, and TYPES OF FIELDS below:
-
-**DEFINITION:**
-  
-    theme_field(
-        $type, 
-        $key,
-        $title = '',
-        $content = '', 
-        $details = '', 
-        $placeholder = '', 
-        $required = 1)
-  
-**EXAMPLE** of a textbox asking for headline:
-    
-    {!! theme_field(
-            'text', 
-            'headline', 
-            'My Aweseome Headline', 
-            '{}', 
-            'Add your Headline here', 
-            0) 
-     !!}
-
-Only the first 2 are arguments are required
-
-    {!! theme_field('text', 'headline') !!}
-
-**EXPLANATION:**
-    
-    $type
-        This is the type of field you want to display, you can
-        take a look at all the fields from the TYPES OF FIELDS
-        section below.
-     $key
-        This is the key you want to create to reference the
-        field in your theme.
-     $title
-        This is the title or the label above the field
-      $content 
-        The current contents or value of the field, if the field
-        has already been created in the db, the value in the
-        database will be used instead
-      $details
-        The details of the field in JSON. You can find more 
-        info about the details from the following URL:
-        https://voyager.readme.io/docs/additional-field-options
-      $placeholder
-        The placeholder value of the field
-      $required
-        Whether or not this field is required
-
-**TYPES OF FIELDS**
-    
-    checkbox, color, date, file, image, multiple_images,
-    number, password, radio_btn, rich_text_box, code_editor,
-    markdown_editor, select_dropdown, select_multiple, text,
-    text_area, timestamp, hidden, coordinates
-
----
-
diff --git a/config/themes.php b/config/themes.php
index 6ed000e..282c00a 100644
--- a/config/themes.php
+++ b/config/themes.php
@@ -3,6 +3,7 @@
 return [
 
 	'themes_folder' => resource_path('views/themes'),
-	'publish_assets' => true
+	'publish_assets' => true,
+	'create_tables' => true
 
 ];
\ No newline at end of file
diff --git a/src/ThemesServiceProvider.php b/src/ThemesServiceProvider.php
index e14d819..c11a7ae 100644
--- a/src/ThemesServiceProvider.php
+++ b/src/ThemesServiceProvider.php
@@ -187,7 +187,7 @@ private function loadDynamicMiddleware($themes_folder, $theme){
      */
     private function addThemesTable()
     {
-        if (!Schema::hasTable('themes')) {
+        if (!Schema::hasTable('themes') && config('themes.create_tables')) {
             Schema::create('themes', function (Blueprint $table) {
                 $table->increments('id');
                 $table->string('name');