cleaned up new page creation

editing page works but making new pages was still wonky, so that was
fixed and now page creation works fine

made some minor tweaks to prettier config for css formatting
This commit is contained in:
ro 2024-03-12 16:16:36 -06:00
parent 6a0c583a4f
commit 4f7bbcdf86
No known key found for this signature in database
GPG key ID: 29B551CDBD4D3B50
12 changed files with 140 additions and 93 deletions

View file

@ -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
} }
} }
] ]
} }

View file

@ -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');
}
} }

View file

@ -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,
]); ]);
} }
} }

View file

@ -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) {

View file

@ -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 [

View file

@ -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 {

View file

@ -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);
}
} }

View file

@ -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(), '{}');

View file

@ -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;
} }

View file

@ -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>

View file

@ -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>

View file

@ -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']);