FEATURE: add another repositories

This commit is contained in:
Michal Kváček
2016-10-18 22:35:06 +02:00
parent 662700b4f2
commit 4f6a006ad9
47 changed files with 410 additions and 400 deletions
@@ -1,78 +0,0 @@
<?php
namespace App\Models\Templates\ModelTraits;
use App\Models\Templates\TemplatePath;
use App\Models\Templates\Template as TemplateModel;
trait Template {
protected $pathModel = null;
/**
* In one path may be many templates
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function getPath()
{
if (!$this->pathModel) {
$this->pathModel = TemplatePath::where('id', $this->path)
->first();
}
return $this->pathModel;
}
/**
* Getter for absolute path to template
*
* @param null $mode
*
* @return string
*/
public function getPathToTemplate($mode = null)
{
$templateName = $this->template_name;
$path = $this->getPath();
// delete namespace if given
if (strpos($this->template_name, '::')) {
list(, $templateName) = explode('::', $templateName);
}
// get template name, do not care about directories (they are already contained in path)
$parts = explode('.', $templateName);
$templateName = last($parts);
// just a shortcut for this unbelievable long constant name...
$_ = DIRECTORY_SEPARATOR;
// path parts
$absolutePath = base_path($path->path);
$templatePath = str_replace('.', $_, $templateName);
$file = $templatePath . TemplateModel::TEMPLATE_SUFFIX;
// compose two versions of path - original and with "custom" directory
$original = $absolutePath . $_ . $file;
$edited = $absolutePath . $_ . TemplateModel::EDITED_TEMPLATES_DIRECTORY . $_ . $file;
// decide which path will be returned
switch ($mode) {
case TemplateModel::CUSTOM_EDIT_DIRECTORY:
return $edited;
break;
case TemplateModel::ORIGINAL_DIRECTORY:
return $original;
break;
default:
if (file_exists($absolutePath . $_ . TemplateModel::EDITED_TEMPLATES_DIRECTORY . $_ . $file)) {
return $edited;
}
return $original;
break;
}
}
}
+9 -7
View File
@@ -6,7 +6,6 @@ use Illuminate\Database\Eloquent\Model;
class Template extends Model
{
use ModelTraits\Template;
public $timestamps = true;
protected $fillable = [
'template_name',
@@ -16,10 +15,13 @@ class Template extends Model
'description',
'editable'
];
const EDITED_TEMPLATES_DIRECTORY = 'custom';
const ASSETS_DIRECTORY = 'assets';
const MODULES_DIRECTORY = 'modules';
const TEMPLATE_SUFFIX = '.blade.php';
const CUSTOM_EDIT_DIRECTORY = 1;
const ORIGINAL_DIRECTORY = 2;
/**
* Template path where this template is stored
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function path() {
return $this->belongsTo(TemplatePath::class, 'path');
}
}
-3
View File
@@ -4,9 +4,6 @@ namespace App\Models\Templates;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomFieldType
*/
class TemplatePath extends Model
{
public $timestamps = true;