diff --git a/ci4/app/Controllers/Wiki/WikiController.php b/ci4/app/Controllers/Wiki/WikiController.php index 77651af3..1e6b3ee7 100644 --- a/ci4/app/Controllers/Wiki/WikiController.php +++ b/ci4/app/Controllers/Wiki/WikiController.php @@ -9,6 +9,7 @@ use App\Models\Wiki\WikiPageModel; use App\Models\Wiki\WikiSectionModel; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; +use CodeIgniter\I18n\Time; use Psr\Log\LoggerInterface; class WikiController extends BaseController @@ -70,6 +71,7 @@ class WikiController extends BaseController $this->wikiContentModel->insert([ "locale" => $this->locale, "page_id" => $wikiPageId, + "last_edit_by" => auth()->user()->id, "editor_data" => json_encode($bodyData) ]); return $this->response->setJSON(["data" => [], "message" => lang("App.global_alert_save_success")]); @@ -80,11 +82,14 @@ class WikiController extends BaseController $wikiSectionPage = $this->wikiSectionModel->find($section_id)->page(); if ($wikiSectionPage) { $wikiPageId = $wikiSectionPage->id; - $this->wikiContentModel->update($wikiPageId,[ - "locale" => $this->locale, - "page_id" => $wikiPageId, + $wikiContentId = $this->wikiContentModel->where("page_id",$wikiPageId)->where('locale',$this->locale)->first()->id; + $this->wikiContentModel->update($wikiContentId,[ + "published_by" => auth()->user()->id, + "last_edit_by" => auth()->user()->id, "editor_data" => json_encode($bodyData), - "published_data" => json_encode($bodyData) + "published_data" => json_encode($bodyData), + "published_at" => Time::now()->format('Y-m-d H:i:s'), + ]); $response = $this->response->setJSON(["data" => [], "message" => lang("App.global_alert_save_success")]); } else { diff --git a/ci4/app/Database/Migrations/2025-02-22-080100_WikiContentsMigration.php b/ci4/app/Database/Migrations/2025-02-22-080100_WikiContentsMigration.php index 8ec4389e..544eacfd 100644 --- a/ci4/app/Database/Migrations/2025-02-22-080100_WikiContentsMigration.php +++ b/ci4/app/Database/Migrations/2025-02-22-080100_WikiContentsMigration.php @@ -31,6 +31,18 @@ class WikiContentsMigration extends Migration 'type' => 'LONGTEXT', 'null' => true, ], + 'published_by' => [ + 'type' => 'INT', + 'unsigned' => true, + 'null' => true, + 'constraint' => 10, + ], + 'last_edit_by' => [ + 'type' => 'INT', + 'unsigned' => true, + 'null' => true, + 'constraint' => 10, + ], ]; public function up() @@ -38,6 +50,11 @@ class WikiContentsMigration extends Migration $this->forge->addField($this->COLUMNS); $currenttime = new RawSql('CURRENT_TIMESTAMP'); $this->forge->addField([ + 'published_at' => [ + 'type' => 'TIMESTAMP', + 'null' => true, + ], + 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => $currenttime, @@ -54,6 +71,8 @@ class WikiContentsMigration extends Migration ]); $this->forge->addPrimaryKey('id'); $this->forge->addForeignKey('page_id','wiki_pages','id'); + $this->forge->addForeignKey('published_by','users','id'); + $this->forge->addForeignKey('last_edit_by','users','id'); $this->forge->createTable("wiki_contents"); } diff --git a/ci4/app/Database/Seeds/WikiSectionSeeder.php b/ci4/app/Database/Seeds/WikiSectionSeeder.php index ef1df474..3f2b28f3 100644 --- a/ci4/app/Database/Seeds/WikiSectionSeeder.php +++ b/ci4/app/Database/Seeds/WikiSectionSeeder.php @@ -8,65 +8,96 @@ use CodeIgniter\Database\Seeder; class WikiSectionSeeder extends Seeder { - protected array $data = [ + protected array $dataAdmin = [ [ "name" => 'Introducción', - "slug" => 'intro', + "slug" => 'intro-admin', "icon" => 'ti ti-home-2' ], [ "name" => 'Presupuesto', - "slug" => 'presupuesto-administrador', - "icon" => 'ti ti-currency-dollar' - ], - [ - "name" => 'Presupuesto cliente', - "slug" => 'presupuesto-cliente', - "role" => 'cliente', + "slug" => 'presupuesto-admin', "icon" => 'ti ti-currency-dollar' ], [ "name" => 'Pedidos', - "slug" => 'pedidos', + "slug" => 'pedidos-admin', "icon" => 'ti ti-file-description' ], [ "name" => 'Facturación', - "slug" => 'facturacion', + "slug" => 'facturacion-admin', "icon" => 'ti ti-file-dollar' ], [ "name" => 'Logística', - "slug" => 'logistica', + "slug" => 'logistica-admin', "icon" => 'ti ti-truck' ], [ "name" => 'Tarifas', - "slug" => 'tarifas', + "slug" => 'tarifas-admin', "icon" => 'ti ti-receipt' ], [ "name" => 'Configuración', - "slug" => 'config', + "slug" => 'config-admin', "icon" => 'ti ti-adjustments-horizontal' ], [ "name" => 'Mensajería', - "slug" => 'messages', + "slug" => 'messages-admin', "icon" => 'ti ti-message' ] ]; + protected array $dataCliente = [ + [ + "name" => 'Presupuesto(Cliente)', + "slug" => 'presupuesto-cliente', + "role" => 'cliente', + "icon" => 'ti ti-currency-dollar', + "role" => 'cliente', + ], + [ + "name" => 'Pedidos(Cliente)', + "slug" => 'pedidos-cliente', + "icon" => 'ti ti-file-description', + "role" => 'cliente', + ], + [ + "name" => 'Facturación (Cliente)', + "slug" => 'facturacion-cliente', + "icon" => 'ti ti-file-dollar', + "role" => 'cliente', + ], + [ + "name" => 'Tarifas (Cliente)', + "slug" => 'tarifas-cliente', + "icon" => 'ti ti-receipt', + "role" => 'cliente', + ], + [ + "name" => 'Mensajería (Cliente)', + "slug" => 'messages-cliente', + "icon" => 'ti ti-message', + "role" => 'cliente', + ] +]; public function run() { $wikiSectionModel = model(WikiSectionModel::class); - foreach ($this->data as $key => $row) { + foreach ($this->dataAdmin as $key => $row) { + # code... + $wikiSectionModel->insert($row); + } + foreach ($this->dataCliente as $key => $row) { # code... $wikiSectionModel->insert($row); } diff --git a/ci4/app/Entities/Wiki/WikiContentEntity.php b/ci4/app/Entities/Wiki/WikiContentEntity.php index 47140b76..03c7e690 100644 --- a/ci4/app/Entities/Wiki/WikiContentEntity.php +++ b/ci4/app/Entities/Wiki/WikiContentEntity.php @@ -1,6 +1,8 @@ null, "editor_data" => null, "published_data" => null, + "last_edit_by" => null, + "published_by" => null, + "published_at" => null, ]; protected $casts = [ "locale" => "string", "page_id" => "int", "editor_data" => "string", "published_data" => "string", + "last_edit_by" => "int", + "published_by" => "int", + "published_at" => "string", ]; + public function publish_by() : string + { + $m = model(UserModel::class); + $user = $m->find($this->attributes['published_by']); + return $user->first_name." ".$user->last_name; + } } diff --git a/ci4/app/Entities/Wiki/WikiPageEntity.php b/ci4/app/Entities/Wiki/WikiPageEntity.php index ef015057..85aed5c2 100644 --- a/ci4/app/Entities/Wiki/WikiPageEntity.php +++ b/ci4/app/Entities/Wiki/WikiPageEntity.php @@ -1,6 +1,7 @@ "int", ]; + + } diff --git a/ci4/app/Entities/Wiki/WikiSectionEntity.php b/ci4/app/Entities/Wiki/WikiSectionEntity.php index 15dd3591..af77e526 100644 --- a/ci4/app/Entities/Wiki/WikiSectionEntity.php +++ b/ci4/app/Entities/Wiki/WikiSectionEntity.php @@ -58,4 +58,6 @@ class WikiSectionEntity extends Entity } return $content; } + + } diff --git a/ci4/app/Language/en/Wiki.php b/ci4/app/Language/en/Wiki.php index b10a7071..e380ee1f 100644 --- a/ci4/app/Language/en/Wiki.php +++ b/ci4/app/Language/en/Wiki.php @@ -10,6 +10,11 @@ return [ 'tarifas' => "Tariff", 'config' => "Configuration", 'messages' => "Messages", + 'save' => "Save", + 'release' => "Release", + 'preview' => "Preview", + 'edit' => "Edit", + 'new_section' => "New section", 'errors' => [ 'publish_before_save' => "You have to save before publish the content" ], diff --git a/ci4/app/Language/es/Wiki.php b/ci4/app/Language/es/Wiki.php index 9761b6f0..6b72e03c 100644 --- a/ci4/app/Language/es/Wiki.php +++ b/ci4/app/Language/es/Wiki.php @@ -1,18 +1,34 @@ "Introducción", - 'presupuesto-cliente' => "Presupuesto cliente", - 'presupuesto-administrador' => "Presupuesto admin", - 'pedidos' => "Pedidos", - 'facturacion' => "Facturación", - 'logistica' => "Logística", - 'tarifas' => "Tarifas", - 'config' => "Configuración", - 'messages' => "Mensajería", + 'intro-admin' => "Introducción", + 'intro-cliente' => "Introducción", + 'presupuesto-cliente' => "Presupuesto (Cliente)", + 'presupuesto-admin' => "Presupuesto admin", + 'pedidos-admin' => "Pedidos", + 'pedidos-cliente' => "Pedidos (Cliente)", + 'facturacion-admin' => "Facturación", + 'facturacion-cliente' => "Facturación(Cliente)", + 'logistica-admin' => "Logística", + 'tarifas-admin' => "Tarifas", + 'tarifas-cliente' => "Tarifas (Cliente)", + 'config-admin' => "Configuración", + 'messages-admin' => "Mensajería", + 'messages-cliente' => "Mensajería (Cliente)", + 'save' => "Guardar", + 'release' => "Publicar", + 'preview' => "Vista previa", + 'edit' => "Editar", + 'name' => "Nombre sección", + 'icon' => "Icono sección", + 'section_placeholder' => "Introduce el nombre de la sección", + 'section_icon_placeholder' => "Introduce el nombre de la sección", + 'edit_section' => "Editar sección", + 'new_section' => "Nueva sección", + 'header-placeholder' => "Escribe un encabezado ...", 'errors' => [ 'publish_before_save' => "Es necesario guardar antes de publicar" ], 'published' => 'Publicado', - 'not_published' => 'Sin publicar' + 'not_published' => 'Sin publicar', ]; diff --git a/ci4/app/Models/Wiki/WikiContentModel.php b/ci4/app/Models/Wiki/WikiContentModel.php index 7f86cbb5..38e48a23 100644 --- a/ci4/app/Models/Wiki/WikiContentModel.php +++ b/ci4/app/Models/Wiki/WikiContentModel.php @@ -17,7 +17,10 @@ class WikiContentModel extends Model "locale", "page_id", "editor_data", - "published_data" + "published_data", + "last_edit_by", + "published_by", + "published_at" ]; @@ -50,4 +53,6 @@ class WikiContentModel extends Model protected $afterFind = []; protected $beforeDelete = []; protected $afterDelete = []; + + } diff --git a/ci4/app/Models/Wiki/WikiSectionModel.php b/ci4/app/Models/Wiki/WikiSectionModel.php index f163d309..7a240278 100644 --- a/ci4/app/Models/Wiki/WikiSectionModel.php +++ b/ci4/app/Models/Wiki/WikiSectionModel.php @@ -58,6 +58,6 @@ class WikiSectionModel extends Model */ public function sections() : array { - return $this->where('role','admin')->findAll(); + return $this->findAll(); } } diff --git a/ci4/app/Views/themes/vuexy/components/modals/modalSection.php b/ci4/app/Views/themes/vuexy/components/modals/modalSection.php new file mode 100644 index 00000000..9dbb3275 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/components/modals/modalSection.php @@ -0,0 +1,39 @@ + + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/wiki_menu.php b/ci4/app/Views/themes/vuexy/main/menus/wiki_menu.php index 6341ff1f..d16a5a8c 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/wiki_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/wiki_menu.php @@ -1,8 +1,16 @@ \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/wiki/layout.php b/ci4/app/Views/themes/vuexy/wiki/layout.php index 9e7f78ad..f36ef1a1 100644 --- a/ci4/app/Views/themes/vuexy/wiki/layout.php +++ b/ci4/app/Views/themes/vuexy/wiki/layout.php @@ -109,16 +109,16 @@ $picture = "/assets/img/default-user.png"; $value) : ?> - - + + + @@ -135,9 +135,20 @@ $picture = "/assets/img/default-user.png"; + +