Replaced Moment with Carbon #84
12 changed files with 140 additions and 93 deletions
68
.prettierrc
68
.prettierrc
|
@ -1,36 +1,36 @@
|
||||||
{
|
{
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
"files": ".prettierrc",
|
"files": ".prettierrc",
|
||||||
"options": { "parser": "json" }
|
"options": { "parser": "json" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": "*.scss",
|
"files": "*.css",
|
||||||
"options": {
|
"options": {
|
||||||
"tabWidth": 4,
|
"tabWidth": 2,
|
||||||
"semi": false,
|
"semi": false,
|
||||||
"singleQuote": true,
|
"singleQuote": false,
|
||||||
"printWidth": 90
|
"printWidth": 90
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": "*.js",
|
"files": "*.js",
|
||||||
"options": {
|
"options": {
|
||||||
"arrowParens": "avoid",
|
"arrowParens": "avoid",
|
||||||
"bracketSpacing": true,
|
"bracketSpacing": true,
|
||||||
"htmlWhitespaceSensitivity": "css",
|
"htmlWhitespaceSensitivity": "css",
|
||||||
"insertPragma": false,
|
"insertPragma": false,
|
||||||
"bracketSameLine": false,
|
"bracketSameLine": false,
|
||||||
"jsxSingleQuote": true,
|
"jsxSingleQuote": true,
|
||||||
"proseWrap": "preserve",
|
"proseWrap": "preserve",
|
||||||
"requirePragma": false,
|
"requirePragma": false,
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"trailingComma": "none",
|
"trailingComma": "none",
|
||||||
"useTabs": true,
|
"useTabs": true,
|
||||||
"tabWidth": 4,
|
"tabWidth": 4,
|
||||||
"printWidth": 90
|
"printWidth": 90
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,4 +22,11 @@ class PageAPIController extends Controller
|
||||||
$result = $this->pages->update($body);
|
$result = $this->pages->update($body);
|
||||||
return response()->json($result)->header('Content-Type', 'application/json');
|
return response()->json($result)->header('Content-Type', 'application/json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function create(Request $request)
|
||||||
|
{
|
||||||
|
$body = json_decode($request->getContent());
|
||||||
|
$result = $this->pages->create($body);
|
||||||
|
return response()->json($result)->header('Content-Type', 'application/json');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,13 +64,18 @@ class IndexController extends Controller
|
||||||
|
|
||||||
public function page($mode, $uuid)
|
public function page($mode, $uuid)
|
||||||
{
|
{
|
||||||
$page = $this->pages->getById($uuid)->first();
|
$title;
|
||||||
|
$page = [];
|
||||||
|
$views = [];
|
||||||
|
$mode == 'edit' ? $page = $this->pages->getById($uuid)->first() : $page = [];
|
||||||
|
$mode == 'edit' ? $title = $page['title'] : $title = 'Add New';
|
||||||
|
$mode == 'edit' ? $views = $this->themes->getCustomViews($page['layout']) : $views[] = 'page';
|
||||||
return view('back.page', [
|
return view('back.page', [
|
||||||
"status" => $this->auth::status(),
|
"status" => $this->auth::status(),
|
||||||
"mode" => $mode,
|
"mode" => $mode,
|
||||||
"page" => $page,
|
"page" => $page,
|
||||||
"views" => $this->themes->getCustomViews($page['layout']),
|
"views" => $views,
|
||||||
"title" => $page['title']
|
"title" => $title,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,11 @@ class FipamoServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
//services
|
//services
|
||||||
$this->app->bind(SettingsService::class, function ($app) {
|
$this->app->bind(SettingsService::class, function ($app) {
|
||||||
return new SettingsService();
|
return new SettingsService(new DocService());
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->bind(AuthService::class, function ($app) {
|
$this->app->bind(AuthService::class, function ($app) {
|
||||||
return new AuthService(new SettingsService());
|
return new AuthService(new SettingsService(new DocService()));
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->bind(ContentService::class, function ($app) {
|
$this->app->bind(ContentService::class, function ($app) {
|
||||||
|
@ -34,7 +34,7 @@ class FipamoServiceProvider extends ServiceProvider
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->bind(ThemeService::class, function ($app) {
|
$this->app->bind(ThemeService::class, function ($app) {
|
||||||
return new ThemeService(new SettingsService());
|
return new ThemeService(new SettingsService(new DocService()));
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->app->bind(PaginateService::class, function ($app) {
|
$this->app->bind(PaginateService::class, function ($app) {
|
||||||
|
|
|
@ -50,6 +50,7 @@ class PageRepository implements PageRepositoryInterface
|
||||||
|
|
||||||
public function create($page)
|
public function create($page)
|
||||||
{
|
{
|
||||||
|
return $this->editPage($page, null, 'create');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update($page)
|
public function update($page)
|
||||||
|
@ -90,7 +91,7 @@ class PageRepository implements PageRepositoryInterface
|
||||||
$updated = Carbon::now();
|
$updated = Carbon::now();
|
||||||
|
|
||||||
// grab current index from settings and update
|
// grab current index from settings and update
|
||||||
$id = $task != 'create' ? $body->id : $this->settings->getGlobal()['currentIndex'];
|
$id = $task != 'create' ? $body->id : $this->settings->getSettings()['library_stats']['current_index'];
|
||||||
$uuid = $task != 'create' ? $body->uuid : $this->strings::createUUID();
|
$uuid = $task != 'create' ? $body->uuid : $this->strings::createUUID();
|
||||||
//set variables post body for saving
|
//set variables post body for saving
|
||||||
$body->id = $id;
|
$body->id = $id;
|
||||||
|
@ -131,6 +132,7 @@ class PageRepository implements PageRepositoryInterface
|
||||||
// if new page added, update current index in Settings file
|
// if new page added, update current index in Settings file
|
||||||
if ($task == 'create') {
|
if ($task == 'create') {
|
||||||
//Settings::updateIndex();
|
//Settings::updateIndex();
|
||||||
|
$this->settings->updatePageIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
|
@ -28,8 +28,32 @@ class DocService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function writeSettings($fileLocation, $fileContents)
|
public static function updateMenu($body)
|
||||||
{
|
{
|
||||||
|
$settings = self::$settings;
|
||||||
|
//$menu = $settings["menu"];
|
||||||
|
$item = [
|
||||||
|
'title' => $body['title'],
|
||||||
|
'id' => $body['id'],
|
||||||
|
'uuid' => $body['uuid'],
|
||||||
|
'slug' => $body['slug'],
|
||||||
|
'path' => $body['path'],
|
||||||
|
];
|
||||||
|
if ($body['menu'] == 'true') {
|
||||||
|
if (!find($settings['menu'], ['uuid' => $item['uuid']])) {
|
||||||
|
array_push($settings['menu'], $item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (find($settings['menu'], ['uuid' => $item['uuid']])) {
|
||||||
|
pull($settings['menu'], $item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DocTools::writeSettings('../config/settings.json', $settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function writeSettings($fileContents)
|
||||||
|
{
|
||||||
|
$fileLocation = env('SETTINGS_PATH');
|
||||||
if (!is_file($fileLocation)) {
|
if (!is_file($fileLocation)) {
|
||||||
file_put_contents($fileLocation, json_encode($fileContents));
|
file_put_contents($fileLocation, json_encode($fileContents));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,23 +4,49 @@ namespace App\Services;
|
||||||
|
|
||||||
class SettingsService
|
class SettingsService
|
||||||
{
|
{
|
||||||
protected $config;
|
protected $settings;
|
||||||
protected $folks;
|
protected $folks;
|
||||||
protected $tags;
|
protected $tags;
|
||||||
|
protected $docs;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct(DocService $docService)
|
||||||
{
|
{
|
||||||
$this->config = json_decode(file_get_contents(env('SETTINGS_PATH')), true);
|
$this->folks = json_decode(file_get_contents(env('FOLKS_PATH')), true);
|
||||||
$this->folks = json_decode(file_get_contents(env('FOLKS_PATH')), true);
|
$this->docs = $docService;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function loadSettings()
|
||||||
|
{
|
||||||
|
return json_decode(file_get_contents(env('SETTINGS_PATH')), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSettings()
|
||||||
|
{
|
||||||
|
return $this->loadSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getGlobal()
|
public function getGlobal()
|
||||||
{
|
{
|
||||||
return $this->config['global'];
|
$this->settings = $this->loadSettings();
|
||||||
|
return $this->settings['global'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFolks()
|
public function getFolks()
|
||||||
{
|
{
|
||||||
return $this->folks;
|
return $this->folks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updatePageIndex()
|
||||||
|
{
|
||||||
|
$this->settings = $this->loadSettings();
|
||||||
|
$this->settings['library_stats']['current_index']++;
|
||||||
|
$this->docs->writeSettings($this->settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateGlobalData($key, $value)
|
||||||
|
{
|
||||||
|
$this->settings = $this->loadSettings();
|
||||||
|
$this->settings['global'][$key] = $data;
|
||||||
|
$this->docs->writeSettings($this->settings);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ class StringService
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function creatUUID()
|
public static function createUUID()
|
||||||
{
|
{
|
||||||
if (function_exists('com_create_guid') === true) {
|
if (function_exists('com_create_guid') === true) {
|
||||||
return trim(com_create_guid(), '{}');
|
return trim(com_create_guid(), '{}');
|
||||||
|
|
|
@ -62,11 +62,7 @@ main > section[role="text-editor"] > div[role="text-editor-control"] button {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="text-editor"] > div[role="text-editor-control"] button > i {
|
||||||
> section[role="text-editor"]
|
|
||||||
> div[role="text-editor-control"]
|
|
||||||
button
|
|
||||||
> i {
|
|
||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,27 +124,16 @@ main
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="file-manager"] > div[role="page-files-list"] > div.audio-item {
|
||||||
> section[role="file-manager"]
|
background: url("/assets/images/global/upload-audio.png") no-repeat center center /
|
||||||
> div[role="page-files-list"]
|
cover;
|
||||||
> div.audio-item {
|
|
||||||
background: url("/assets/images/global/upload-audio.png") no-repeat center
|
|
||||||
center / cover;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="file-manager"] > div[role="page-files-list"] > div.file-item {
|
||||||
> section[role="file-manager"]
|
background: url("/assets/images/global/upload-doc.png") no-repeat center center / cover;
|
||||||
> div[role="page-files-list"]
|
|
||||||
> div.file-item {
|
|
||||||
background: url("/assets/images/global/upload-doc.png") no-repeat center
|
|
||||||
center / cover;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="file-manager"] > div[role="page-files-list"] > div.file-item > a {
|
||||||
> section[role="file-manager"]
|
|
||||||
> div[role="page-files-list"]
|
|
||||||
> div.file-item
|
|
||||||
> a {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: var(--secondary);
|
background: var(--secondary);
|
||||||
|
@ -245,10 +230,7 @@ main
|
||||||
border-radius: 0 3px 3px 0;
|
border-radius: 0 3px 3px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main section[role="page-meta"] div[role="page-meta-wrapper"] button[data-active="false"] {
|
||||||
section[role="page-meta"]
|
|
||||||
div[role="page-meta-wrapper"]
|
|
||||||
button[data-active="false"] {
|
|
||||||
background: var(--primary);
|
background: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,10 +301,7 @@ main > section[role="text-editor"] > div[role="edit-post-wrapper"] {
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="text-editor"] > div[role="edit-post-wrapper"] textarea:focus {
|
||||||
> section[role="text-editor"]
|
|
||||||
> div[role="edit-post-wrapper"]
|
|
||||||
textarea:focus {
|
|
||||||
outline: none;
|
outline: none;
|
||||||
border-color: var(--highlight);
|
border-color: var(--highlight);
|
||||||
}
|
}
|
||||||
|
@ -347,10 +326,7 @@ main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight-content {
|
||||||
section[role="text-editor"]
|
|
||||||
div[role="edit-post-wrapper"]
|
|
||||||
#highlight-content {
|
|
||||||
word-wrap: normal;
|
word-wrap: normal;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
line-break: normal;
|
line-break: normal;
|
||||||
|
@ -363,10 +339,7 @@ main > section[role="text-editor"] > div[role="edit-post-wrapper"] > #edit {
|
||||||
caret-color: var(--highlight);
|
caret-color: var(--highlight);
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main > section[role="text-editor"] > div[role="edit-post-wrapper"] > #highlight {
|
||||||
> section[role="text-editor"]
|
|
||||||
> div[role="edit-post-wrapper"]
|
|
||||||
> #highlight {
|
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,12 +33,12 @@
|
||||||
|
|
||||||
@section('main-content')
|
@section('main-content')
|
||||||
<section data-index="{{ $id }}" data-uuid="{{ $uuid }}" data-slug="{{ $slug }}" data-layout="{{ $layout }}" role="file-manager">
|
<section data-index="{{ $id }}" data-uuid="{{ $uuid }}" data-slug="{{ $slug }}" data-layout="{{ $layout }}" role="file-manager">
|
||||||
@if($page['feature'] == null)
|
@if($feature == '')
|
||||||
<div role="file-drop">
|
<div role="file-drop">
|
||||||
<label for="page-files-upload">DRAG AND DROP FILES OR CLICK TO SELECT</label>
|
<label for="page-files-upload">DRAG AND DROP FILES OR CLICK TO SELECT</label>
|
||||||
</div>
|
</div>
|
||||||
<label role="list-title">IMAGES AND VIDEO</label>
|
<label role="list-title">IMAGES AND VIDEO</label>
|
||||||
<div role="page-images-list"></div>
|
<div id="page-images-list" role="page-images-list"></div>
|
||||||
<label role="list-title">FILES</label>
|
<label role="list-title">FILES</label>
|
||||||
<div role="page-files-list"></div>
|
<div role="page-files-list"></div>
|
||||||
@else
|
@else
|
||||||
|
@ -152,7 +152,7 @@
|
||||||
<strong>LAYOUTS</strong>
|
<strong>LAYOUTS</strong>
|
||||||
<select id="page-templates">
|
<select id="page-templates">
|
||||||
@foreach($views as $view)
|
@foreach($views as $view)
|
||||||
@if($view == $page['layout'])
|
@if($view == $layout)
|
||||||
<option value={{ $view }} selected>{{ $view }}</option>
|
<option value={{ $view }} selected>{{ $view }}</option>
|
||||||
@else
|
@else
|
||||||
<option value={{ $view }}>{{ $view }}</option>
|
<option value={{ $view }}>{{ $view }}</option>
|
||||||
|
|
|
@ -1,27 +1,34 @@
|
||||||
|
|
||||||
@php
|
@php
|
||||||
|
|
||||||
if($page['menu'])
|
if(isset($page['menu']) && $page['menu'])
|
||||||
{
|
{
|
||||||
$menu = 'true';
|
$menu = 'true';
|
||||||
}else{
|
}else{
|
||||||
$menu = 'false';
|
$menu = 'false';
|
||||||
}
|
}
|
||||||
|
|
||||||
if($page['featured'])
|
if(isset($page['featured']) && $page['featured'])
|
||||||
{
|
{
|
||||||
$featured = 'true';
|
$featured = 'true';
|
||||||
}else{
|
}else{
|
||||||
$featured = 'false';
|
$featured = 'false';
|
||||||
}
|
}
|
||||||
|
|
||||||
if($page['published'])
|
if(isset($page['published']) && $page['published'])
|
||||||
{
|
{
|
||||||
$published = 'true';
|
$published = 'true';
|
||||||
}else{
|
}else{
|
||||||
$published = 'false';
|
$published = 'false';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isset($page['uuid']))
|
||||||
|
{
|
||||||
|
$uuid = $page['uuid'];
|
||||||
|
}else{
|
||||||
|
$uuid = 1;
|
||||||
|
}
|
||||||
|
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
@ -37,7 +44,7 @@ if($page['published'])
|
||||||
<svg id="option-published-icon" role="icon">
|
<svg id="option-published-icon" role="icon">
|
||||||
<use id="option-published-icon" xlink:href="/assets/images/global/sprite.svg#entypo-globe"/>
|
<use id="option-published-icon" xlink:href="/assets/images/global/sprite.svg#entypo-globe"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button><a href="/dashboard/page/preview/{{ $page['uuid'] }}" target="_blank"><button id="option-preview" class="option-inactive post-option-btn" data-active="false" title='preview page'>
|
</button><a href="/dashboard/page/preview/{{ $uuid }}" target="_blank"><button id="option-preview" class="option-inactive post-option-btn" data-active="false" title='preview page'>
|
||||||
<svg id="option-preview-icon" role="icon">
|
<svg id="option-preview-icon" role="icon">
|
||||||
<use id="option-preview-icon" xlink:href="/assets/images/global/sprite.svg#entypo-eye"/>
|
<use id="option-preview-icon" xlink:href="/assets/images/global/sprite.svg#entypo-eye"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
@ -18,5 +18,8 @@ use App\Http\Controllers\API\FileUploadAPIController;
|
||||||
|
|
||||||
//check if session is active
|
//check if session is active
|
||||||
Route::get("/v1/status", [AuthAPIController::class, 'status']);
|
Route::get("/v1/status", [AuthAPIController::class, 'status']);
|
||||||
|
//handle page editing actions
|
||||||
Route::put("/v1/page/write", [PageAPIController::class, 'write']);
|
Route::put("/v1/page/write", [PageAPIController::class, 'write']);
|
||||||
|
Route::post("/v1/page/create", [PageAPIController::class, 'create']);
|
||||||
|
//handle file uploads
|
||||||
Route::post("/v1/files", [FileUploadAPIController::class, 'upload']);
|
Route::post("/v1/files", [FileUploadAPIController::class, 'upload']);
|
||||||
|
|
Loading…
Add table
Reference in a new issue