Skip to content

Commit

Permalink
Adding updates to conditionally create the tables when loading the se…
Browse files Browse the repository at this point in the history
…rvice provider
  • Loading branch information
tnylea committed Apr 2, 2024
1 parent ace0607 commit ec5ad84
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 104 deletions.
110 changes: 8 additions & 102 deletions README.md
Original file line number Diff line number Diff line change
@@ -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:

Expand All @@ -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')
Expand All @@ -45,15 +35,16 @@ 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
return [
'themes_folder' => resource_path('views/themes'),
'publish_assets' => true
'publish_assets' => true,
'create_tables' => true
];
```
Expand All @@ -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

---

3 changes: 2 additions & 1 deletion config/themes.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
return [

'themes_folder' => resource_path('views/themes'),
'publish_assets' => true
'publish_assets' => true,
'create_tables' => true

];
2 changes: 1 addition & 1 deletion src/ThemesServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down

0 comments on commit ec5ad84

Please sign in to comment.