+# V 0.2.1 Modul Page
+
+## Added
+- Modul Page, ersetzt Article
+
+## Deleted
+- Modul Article, wird durch Page ersetzt
+
+
# V 0.2.0 Module Article
## Added
+<html>
+
+<body>
+</body>
+
+</html>
\ No newline at end of file
+++ /dev/null
-<?php
-
-namespace App\Http\Controllers;
-
-use App\Models\File;
-use App\Models\Module;
-use App\Helpers\Helper;
-use App\Models\Article;
-use App\Helpers\DbHelper;
-use App\Models\SProperty;
-use App\Helpers\MediaWiki;
-use App\Helpers\FileHelper;
-use App\Helpers\Pagination;
-use App\Helpers\ViewHelper;
-use Illuminate\Http\Request;
-use App\Helpers\TextProcessor;
-use App\Helpers\ContextLaraKnife;
-use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Route;
-use Illuminate\Support\Facades\Validator;
-
-class ArticleController extends Controller
-{
- private function asPreview(Article $article): string
- {
- $type = $article->markup_scope;
- switch ($type) {
- case 1122: // mediawiki
- $wiki = new MediaWiki();
- $text = $wiki->ToHtml($article->contents);
- break;
- case 1223: // html
- $text = $article->contents;
- break;
- default:
- case 1121: // plain text
- $text = '<p>' . str_replace('/\r?\n/', "</p>\n<p>", $article->contents) . "</p>";
- break;
- }
- return $text;
- }
- /**
- * Show the form for creating a new resource.
- */
- public function create(Request $request)
- {
- if ($request->btnSubmit === 'btnCancel') {
- $rc = redirect('/article-index');
- } else {
- $fields = $request->all();
- if (count($fields) === 0) {
- $fields = [
- 'title' => '',
- 'contents' => '',
- 'info' => '',
- 'articletype_scope' => '',
- 'markup_scope' => '1122',
- 'order' => '0',
- 'audio_id' => ''
- ];
- }
- $optionsArticletype = SProperty::optionsByScope('articletype', $fields['articletype_scope'], '-');
- $optionsMarkup = SProperty::optionsByScope('markup', $fields['markup_scope'], '-');
- $context = new ContextLaraKnife($request, $fields);
- $rc = view('article.create', [
- 'context' => $context,
- 'optionsArticletype' => $optionsArticletype,
- 'optionsMarkup' => $optionsMarkup,
- ]);
- }
- return $rc;
- }
- /**
- * Show the form for editing the specified resource.
- */
- public function edit(Article $article, Request $request)
- {
- if ($request->btnSubmit === 'btnCancel') {
- $rc = redirect('/article-index');
- } elseif ($request->btnSubmit === 'btnStore') {
- $rc = $this->update($article, $request);
- } else {
- $fields = $request->all();
- if (count($fields) === 0) {
- $fields = [
- 'title' => $article->title,
- 'contents' => $article->contents,
- 'info' => $article->info,
- 'articletype_scope' => $article->articletype_scope,
- 'markup_scope' => $article->markup_scope,
- 'order' => $article->order ?? '0',
- 'audio_id' => $article->audio_id
- ];
- } else {
- $fields['articletype_scope'] = $article->articletype_scope;
- $fields['markup_scope'] = $article->markup_scope;
- }
- $optionsArticletype = SProperty::optionsByScope('articletype', $article->articletype_scope, '');
- $optionsMarkup = SProperty::optionsByScope('markup', $article->markup_scope, '');
- $fields = $request->btnSubmit !== 'btnPreview' ? null : ['preview' => $this->asPreview($article)];
- $context = new ContextLaraKnife($request, $fields, $article);
- $rc = view('article.edit', [
- 'context' => $context,
- 'optionsArticletype' => $optionsArticletype,
- 'optionsMarkup' => $optionsMarkup,
- ]);
- }
- return $rc;
- }
- /**
- * Remove the specified resource from storage.
- */
- public function destroy(Article $article, Request $request)
- {
- if ($request->btnSubmit === 'btnDelete') {
- $article->delete();
- }
- return redirect('/article-index');
- }
- /**
- * Display the database records of the resource.
- */
- public function index(Request $request)
- {
- if ($request->btnSubmit === 'btnNew') {
- return redirect('/article-create');
- } else {
- $sql = "
-SELECT t0.*,
- t1.name as articletype_scope,
- t2.name as markup_scope,
- t3.name as audio_id
-FROM articles t0
-LEFT JOIN sproperties t1 ON t1.id=t0.articletype_scope
-LEFT JOIN sproperties t2 ON t2.id=t0.markup_scope
-LEFT JOIN sproperties t3 ON t3.id=t0.audio_id
-";
- $parameters = [];
- $fields = $request->all();
- if (count($fields) == 0) {
- $fields = [
- 'articletype' => '',
- 'markup' => '',
- 'text' => '',
- '_sortParams' => 'title:asc;id:asc'
- ];
- } else {
- $conditions = [];
- ViewHelper::addConditionComparism($conditions, $parameters, 'articletype_scope', 'articletype');
- ViewHelper::addConditionComparism($conditions, $parameters, 'markup_scope', 'markup');
- ViewHelper::addConditionPattern($conditions, $parameters, 'title,info,contents', 'text');
- $sql = DbHelper::addConditions($sql, $conditions);
- }
- $sql = DbHelper::addOrderBy($sql, $fields['_sortParams']);
- $pagination = new Pagination($sql, $parameters, $fields);
- $records = $pagination->records;
- $optionsArticletype = SProperty::optionsByScope('articletype', $fields['articletype'], 'all');
- $optionsMarkup = SProperty::optionsByScope('markup', $fields['markup'], 'all');
- $context = new ContextLaraKnife($request, $fields);
- return view('article.index', [
- 'context' => $context,
- 'records' => $records,
- 'optionsArticletype' => $optionsArticletype,
- 'optionsMarkup' => $optionsMarkup,
- 'pagination' => $pagination
- ]);
- }
- }
- /**
- * Returns the validation rules.
- * @return array<string, string> The validation rules.
- */
- private function rules(bool $isCreate = false): array
- {
- $rc = [
- 'title' => 'required',
- 'contents' => 'required',
- 'info' => '',
- 'order' => 'integer|min:0|max:9999'
- ];
- if ($isCreate) {
- $rc['markup_scope'] = 'required';
- $rc['articletype_scope'] = 'required';
- }
- return $rc;
- }
- public static function routes()
- {
- Route::get('/article-index', [ArticleController::class, 'index'])->middleware('auth');
- Route::post('/article-index', [ArticleController::class, 'index'])->middleware('auth');
- Route::get('/article-create', [ArticleController::class, 'create'])->middleware('auth');
- Route::put('/article-store', [ArticleController::class, 'store'])->middleware('auth');
- Route::post('/article-edit/{article}', [ArticleController::class, 'edit'])->middleware('auth');
- Route::get('/article-edit/{article}', [ArticleController::class, 'edit'])->middleware('auth');
- Route::post('/article-update/{article}', [ArticleController::class, 'update'])->middleware('auth');
- Route::get('/article-show/{article}/delete', [ArticleController::class, 'show'])->middleware('auth');
- Route::delete('/article-show/{article}/delete', [ArticleController::class, 'destroy'])->middleware('auth');
- Route::get('/article-showpretty/{article}', [ArticleController::class, 'showPretty'])->middleware('auth');
- Route::post('/article-showpretty/{article}', [ArticleController::class, 'showPretty'])->middleware('auth');
- }
- /**
- * Display the specified resource.
- */
- public function show(Article $article, Request $request)
- {
- if ($request->btnSubmit === 'btnCancel') {
- $rc = redirect('/article-index')->middleware('auth');
- } else {
- $optionsArticletype = SProperty::optionsByScope('articletype', $article->articletype_scope, '');
- $optionsMarkup = SProperty::optionsByScope('markup', $article->markup_scope, '');
- $context = new ContextLaraKnife($request, null, $article);
- $rc = view('article.show', [
- 'context' => $context,
- 'optionsArticletype' => $optionsArticletype,
- 'optionsMarkup' => $optionsMarkup,
- 'mode' => 'delete'
- ]);
- }
- return $rc;
- }
- public function showPretty(Article $article, Request $request)
- {
- if ($request->btnSubmit === 'btnCancel') {
- $rc = redirect('/article-index')->middleware('auth');
- } else {
- $text = $this->asPreview($article);
- $link = $article->audio_id == null ? null : File::relativeFileLink($article->audio_id);
- $context = new ContextLaraKnife($request, ['text' => $text, 'link' => $link], $article);
- $rc = view('article.showpretty', [
- 'context' => $context,
- 'mode' => 'delete'
- ]);
- }
- return $rc;
- }
-
- /**
- * Store a newly created resource in storage.
- */
- public function store(Request $request)
- {
- $rc = null;
- if ($request->btnSubmit === 'btnStore') {
- $fields = $request->all();
- $validator = Validator::make($fields, $this->rules(true));
- if ($validator->fails()) {
- $rc = back()->withErrors($validator)->withInput();
- } else {
- $validated = $validator->validated();
- $validated['info'] = strip_tags($validated['info']);
- $validated['contents'] = TextProcessor::expandStarItems(strip_tags($validated['contents']));
- Article::create($validated);
- }
- }
- if ($rc == null) {
- $rc = redirect('/article-index');
- }
- return $rc;
- }
- /**
- * Update the specified resource in storage.
- */
- public function update(Article $article, Request $request)
- {
- $rc = null;
- if ($request->btnSubmit === 'btnStore') {
- $fields = $request->all();
- $validator = Validator::make($fields, $this->rules(false));
- if ($validator->fails()) {
- $rc = back()->withErrors($validator)->withInput();
- } else {
- $validated = $validator->validated();
- $validated['info'] = strip_tags($validated['info']);
- if (empty($article->audio_id) && $request->file('file') != null) {
- $filename = FileHelper::textToFilename($article->title);
- $moduleId = Module::idOfModule('Article');
- $fileId = File::storeFile($request, $article->title, 1103, 1091, 'audio file of article', $filename, $moduleId, $article->id);
- $validated['audio_id'] = $fileId;
- }
- $article->update($validated);
- }
- }
- if ($rc == null) {
- $rc = redirect("/article-edit/$article->id");
- }
- return $rc;
- }
-}
--- /dev/null
+../../../vendor/hamatoma/laraknife/templates/Http/Controllers/PageController.php
\ No newline at end of file
'word' => $word->word,
'usage' => $phrase->phrase,
'wordtype_scope' => $phrase->wordtype_scope,
- 'language' => $request->language,
- 'language' => SProperty::idOfLocalization(),
+ 'language' => SProperty::idOfLocalization(auth()->user()->localization),
'lastLanguage' => '',
'translation' => ''
];
+++ /dev/null
-<?php
-
-namespace App\Models;
-
-use Illuminate\Database\Eloquent\Collection;
-use Illuminate\Support\Facades\DB;
-use Hamatoma\Laraknife\ViewHelpers;
-use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\Factories\HasFactory;
-
-class Article extends Model
-{
- use HasFactory;
- protected $table = 'articles';
- protected $fillable = [
- 'title',
- 'contents',
- 'info',
- 'articletype_scope',
- 'markup_scope',
- 'order',
- 'audio_id'
- ];
-}
--- /dev/null
+../../vendor/hamatoma/laraknife/templates/Models/Page.php
\ No newline at end of file
"dist": {
"type": "path",
"url": "../laraknife",
- "reference": "d680038f94e633d0eb91a1f1d0220a0682f2dae3"
+ "reference": "da72a7038fb52b0a6aeeb7c75b89094d5b5c705c"
},
"require-dev": {
"phpunit/phpunit": "11.0.x-dev"
},
{
"name": "laravel/framework",
- "version": "v11.4.0",
+ "version": "v11.5.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a"
+ "reference": "e3c24268f1404805e15099b9f035fe310cb30753"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/c1dc67c28811dc5be524a30b18f29ce62126716a",
- "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753",
+ "reference": "e3c24268f1404805e15099b9f035fe310cb30753",
"shasum": ""
},
"require": {
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2024-04-16T14:38:51+00:00"
+ "time": "2024-04-23T15:11:31+00:00"
},
{
"name": "laravel/prompts",
- "version": "v0.1.19",
+ "version": "v0.1.20",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18"
+ "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/0ab75ac3434d9f610c5691758a6146a3d1940c18",
- "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2",
+ "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2",
"shasum": ""
},
"require": {
],
"support": {
"issues": "https://github.com/laravel/prompts/issues",
- "source": "https://github.com/laravel/prompts/tree/v0.1.19"
+ "source": "https://github.com/laravel/prompts/tree/v0.1.20"
},
- "time": "2024-04-16T14:20:35+00:00"
+ "time": "2024-04-18T00:45:25+00:00"
},
{
"name": "laravel/serializable-closure",
},
{
"name": "laravel/pint",
- "version": "v1.15.1",
+ "version": "v1.15.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
- "reference": "5f288b5e79938cc72f5c298d384e639de87507c6"
+ "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/pint/zipball/5f288b5e79938cc72f5c298d384e639de87507c6",
- "reference": "5f288b5e79938cc72f5c298d384e639de87507c6",
+ "url": "https://api.github.com/repos/laravel/pint/zipball/2c9f8004899815f3f0ee3cb28ef7281e2b589134",
+ "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134",
"shasum": ""
},
"require": {
"php": "^8.1.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.52.1",
- "illuminate/view": "^10.48.4",
- "larastan/larastan": "^2.9.2",
+ "friendsofphp/php-cs-fixer": "^3.54.0",
+ "illuminate/view": "^10.48.8",
+ "larastan/larastan": "^2.9.5",
"laravel-zero/framework": "^10.3.0",
"mockery/mockery": "^1.6.11",
"nunomaduro/termwind": "^1.15.1",
- "pestphp/pest": "^2.34.5"
+ "pestphp/pest": "^2.34.7"
},
"bin": [
"builds/pint"
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
- "time": "2024-04-02T14:28:47+00:00"
+ "time": "2024-04-23T15:42:34+00:00"
},
{
"name": "laravel/sail",
},
{
"name": "phpunit/phpunit",
- "version": "10.5.19",
+ "version": "10.5.20",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c726f0de022368f6ed103e452a765d3304a996a4"
+ "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c726f0de022368f6ed103e452a765d3304a996a4",
- "reference": "c726f0de022368f6ed103e452a765d3304a996a4",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3",
+ "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3",
"shasum": ""
},
"require": {
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.19"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20"
},
"funding": [
{
"type": "tidelift"
}
],
- "time": "2024-04-17T14:06:18+00:00"
+ "time": "2024-04-24T06:32:35+00:00"
},
{
"name": "sebastian/cli-parser",
},
{
"name": "spatie/backtrace",
- "version": "1.5.3",
+ "version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/backtrace.git",
- "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab"
+ "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab",
- "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab",
+ "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23",
+ "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23",
"shasum": ""
},
"require": {
},
"require-dev": {
"ext-json": "*",
+ "laravel/serializable-closure": "^1.3",
"phpunit/phpunit": "^9.3",
"spatie/phpunit-snapshot-assertions": "^4.2",
"symfony/var-dumper": "^5.1"
"spatie"
],
"support": {
- "source": "https://github.com/spatie/backtrace/tree/1.5.3"
+ "source": "https://github.com/spatie/backtrace/tree/1.6.1"
},
"funding": [
{
"type": "other"
}
],
- "time": "2023-06-28T12:59:17+00:00"
+ "time": "2024-04-24T13:22:11+00:00"
},
{
"name": "spatie/flare-client-php",
+++ /dev/null
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-return new class extends Migration
-{
- /**
- * Run the migrations.
- */
- public function up(): void
- {
- Schema::create('articles', function (Blueprint $table) {
- $table->id();
- $table->timestamps();
- $table->string('title');
- $table->text('contents');
- $table->text('info')->nullable();
- $table->integer('articletype_scope');
- $table->integer('markup_scope');
- $table->integer('order')->nullable();
- $table->foreignId('audio_id')->nullable()->references('id')->on('files');
- });
- }
-
- /**
- * Reverse the migrations.
- */
- public function down(): void
- {
- Schema::dropIfExists('articles');
- }
-};
--- /dev/null
+../../vendor/hamatoma/laraknife/templates/database/migrations/2024_04_21_092103_create_pages_table.php
\ No newline at end of file
+++ /dev/null
-<?php
-
-namespace Database\Seeders;
-
-use App\Models\Module;
-use App\Models\Menuitem;
-use Illuminate\Database\Seeder;
-use Illuminate\Database\Console\Seeds\WithoutModelEvents;
-
-class MenuitemArticleSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- */
- public function run(): void
- {
- Menuitem::insertIfNotExists('articles', 'bi bi-journals');
- Module::insertIfNotExists('Article');
- }
-}
--- /dev/null
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\SProperty;
+use Illuminate\Database\Seeder;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+
+class PageLocalSeeder extends Seeder
+{
+ /**
+ * Run the database seeds.
+ */
+ public function run(): void
+ {
+ SProperty::insertIfNotExists(2031, 'pagetype', 'chapter', 110, 'CH');
+ SProperty::insertIfNotExists(2032, 'pagetype', 'grammar rules', 120, 'GR');
+ SProperty::insertIfNotExists(2033, 'pagetype', 'cloze text', 130, 'CT');
+ SProperty::insertIfNotExists(2034, 'pagetype', 'free text', 140, 'FT');
+ SProperty::insertIfNotExists(2035, 'pagetype', 'snake text', 150, 'ST');
+ }
+}
--- /dev/null
+../../vendor/hamatoma/laraknife/templates/database/seeders/PageSeeder.php
\ No newline at end of file
+++ /dev/null
-<?php
-
-namespace Database\Seeders;
-
-use App\Models\SProperty;
-use Illuminate\Database\Seeder;
-use Illuminate\Database\Console\Seeds\WithoutModelEvents;
-
-class SPropertyArticleSeeder extends Seeder
-{
- /**
- * Run the database seeds.
- */
- public function run(): void
- {
- SProperty::insertIfNotExists(1121, 'markup', 'plain text', 10, 'PT');
- SProperty::insertIfNotExists(1122, 'markup', 'mediawiki', 20, 'MW');
- SProperty::insertIfNotExists(1123, 'markup', 'HTML', 30, 'HL');
-
- SProperty::insertIfNotExists(2031, 'articletype', 'chapter', 10, 'CH');
- SProperty::insertIfNotExists(2032, 'articletype', 'grammar rules', 20, 'CH');
- SProperty::insertIfNotExists(2033, 'articletype', 'cloze text', 30, 'CT');
- SProperty::insertIfNotExists(2034, 'articletype', 'free text', 40, 'FT');
- SProperty::insertIfNotExists(2035, 'articletype', 'snake text', 50, 'FT');
- }
-}
"Adjective": "Adjektiv",
"Administrator": "Administrator",
"All": "Alle",
- "Article": "Artikel",
- "Articles": "Artikel",
- "Articletype": "Artikeltyp",
"Assign Roles": "Rollen zuordnen",
"Body": "Info",
"Cancel": "Abbrechen",
"Change of a Term": "\u00c4ndern eines Termins",
"Change of a Verb": "\u00c4nderung eines Verbs",
"Change of a Word": "\u00c4nderung eines Wortes",
- "Change of an Article": "\u00c4nderung eines Artikels",
"Change of an User": "\u00c4ndern eines Benutzers",
"Chapter": "Kapitel",
"Chapters": "Kapitel",
"Creation of a File": "Hochladen einer Datei",
"Creation of a Menu Item": "Erstellen eine Men\u00fceintrags",
"Creation of a Note": "Erstellen einer Notiz",
+ "Creation of a Page": "Neue Seite",
"Creation of a Role": "Erstellen eine Rolle",
"Creation of a Scoped Property": "Erzeugen einer bereichsbasierten Eigenschaft",
"Creation of a Term": "Erstellen eines Termins",
"Creation of a Verb": "Neues Verb",
- "Creation of an Article": "Neuer Artikel",
"Creation of an User": "Erstellen eines Benutzers",
"Date": "Datum",
"Delete": "L\u00f6schen",
"Deletion of a Menu Item": "L\u00f6schen eines Men\u00fceintrags",
"Deletion of a Note": "L\u00f6schen einer Notiz",
"Deletion of a Noun": "L\u00f6schen eines Nomens",
+ "Deletion of a Page": "L\u00f6schen einer Seite",
"Deletion of a Scoped Property": "L\u00f6schen einer bereichsbasierten Eigenschaft",
"Deletion of a Verb": "L\u00f6schen eines Verbs",
"Deletion of a Word": "L\u00f6schen eines Wortes",
- "Deletion of an Article": "L\u00f6schen eines Artikels",
"Deletion of an User": "L\u00f6schen eines Benutzers",
"Description": "Beschreibung",
"Displaying an User": "Anzeige eines Benutzers",
"Overview": "\u00dcberblick",
"Overwrites the upload name (if not empty)": "\u00dcberschreibt den Hochladenamen (wenn nicht leer)",
"Owner": "Besitzer",
+ "Page": "Seite",
+ "Pages": "Seite",
+ "Pagetype": "Seitentyp",
"Participle": "Partizip",
"Password": "Passwort",
"Password forgotten?": "Passwort vergessen?",
"Phrases": "S\u00e4tze",
"Please use the following link and change your password:": "Bitte benutze den folgenden Verweis und \u00e4ndere dein Passwort",
"Preposition": "Pr\u00e4position",
+ "Preview": "Vorschau",
"Privacy": "Datenschutz",
"Properties": "Eigenschaften",
"Remain signed in": "Angemeldet bleiben",
"ZZZ-last": "",
"ZZZZZ_last": "",
"active": "aktiv",
- "articletype": "Artikeltyp",
"chapter": "Kapitel",
"closed": "geschlossen",
"cloze text": "L\u00fcckentext",
"feminine": "Femininum",
"free text": "Freier Text",
"grammar rules": "Grammatikregeln",
+ "help": "Hilfe",
"icon": "Bildsymbol",
"inactive": "nicht aktiv",
"label": "Beschriftung",
"link": "Verweis",
"markdown simple": "einfache Markierungssprache",
"masculine": "Maskulinum",
+ "menu": "Men\u00fc",
"neuter": "Neutrum",
"open": "offen",
+ "pagetype": "Seitentyp",
"plain text": "reiner Text",
"private": "privat",
"public": "\u00f6ffentlich",
# Enter the module names separated by " ".
# Example: MISSING="User Role Menuitem"
-MISSING="Chapter SPropertyAudio ModuleGaDeKu SPropertyArticle"
+MISSING="Chapter SPropertyAudio ModuleGaDeKu Page PageLocal"
"!comment": "Bitte alphabetisch sortiert eintragen!",
"<Not verified>": "<Nicht verifiziert>",
"Adjective": "Adjektiv",
-"Article": "Artikel",
-"Articles": "Artikel",
-"articletype": "Artikeltyp",
-"Articletype": "Artikeltyp",
-"Change of an Article": "Änderung eines Artikels",
"Change of a Chapter": "Änderung eines Kapitels",
"Change of a Noun": "Änderung eines Nomens",
"Change of a Phrase": "Änderung eines Satzes",
"Chapters": "Kapitel",
"cloze text": "Lückentext",
"Contents": "Inhalt",
-"Creation of an Article": "Neuer Artikel",
"Creation of a Chapter": "Neues Kapitel",
"Creation of a Verb": "Neues Verb",
-"Deletion of an Article": "Löschen eines Artikels",
"Deletion of a Noun": "Löschen eines Nomens",
"Deletion of a Verb": "Löschen eines Verbs",
"Deletion of a Word": "Löschen eines Wortes",
+++ /dev/null
-@extends('layouts.backend')
-
-@section('content')
- <form id="article-create" action="/article-store" method="POST">
- @csrf
- @method('PUT')
- <x-laraknife.panels.create title="{{ __('Creation of an Article') }}">
- <x-laraknife.forms.combobox position="first" name="articletype_scope" label="Articletype" :options="$optionsArticletype"
- width2="4" />
- <x-laraknife.forms.combobox position="last" name="markup_scope" label="Markup" :options="$optionsMarkup" width2="4" />
- <x-laraknife.forms.string position="alone" name="title" label="Title"
- value="{{ $context->valueOf('title') }}" width2="10" />
- <x-laraknife.forms.text position="alone" name="contents" label="Contents"
- value="{{ $context->valueOf('contents') }}" width2="10" rows="10" />
- <x-laraknife.forms.text position="alone" name="info" label="Info" value="{{ $context->valueOf('info') }}"
- width2="10" rows="2" />
- </x-laraknife.panels.create>
- </form>
-@endsection
+++ /dev/null
-@extends('layouts.backend')
-
-@section('content')
- <form id="article-edit" action="/article-edit/{{ $context->model->id }}" method="POST">
- @csrf
- <x-laraknife.panels.edit title="{{ __('Change of an Article') }}">
- <x-laraknife.forms.combobox position="first" name="articletype_scope" label="Articletype" :options="$optionsArticletype"
- width2="4" attribute="readonly"/>
- <x-laraknife.forms.combobox position="last" name="markup_scope" label="Markup" :options="$optionsMarkup" width2="4" attribute="readonly"/>
- <x-laraknife.forms.string position="first" name="title" label="Title"
- value="{{ $context->valueOf('title') }}" width2="4" />
- <x-laraknife.forms.string type="number" position="last" name="order" label="Order"
- value="{{ $context->valueOf('order') }}" width2="4" />
- <x-laraknife.forms.text position="alone" name="contents" label="Contents"
- value="{{ $context->valueOf('contents') }}" width2="10" rows="10" />
- <x-laraknife.forms.text position="alone" name="info" label="Info" value="{{ $context->valueOf('info') }}"
- width2="10" rows="2" />
- <x-laraknife.forms.file-protected position="first" name="file" fieldId="{{ $context->model->audio_id }}"
- label="Audio" width2="4" />
- <x-laraknife.buttons.button position="last" name="btnPreview" label="Preview" />
- @if(! empty($context->valueOf('preview')))
- <div class="lkn-text">{!! $context->valueOf('preview') !!}
- </div>
- @endif
- </x-laraknife.panels.edit>
- </form>
-@endsection
+++ /dev/null
-@extends('layouts.backend')
-
-@section('content')
-<form id="article-index" action="/article-index" method="POST">
- @csrf
- <x-laraknife.panels.index title="{{ __('Articles') }}">
- <x-laraknife.panels.filter legend="{{ $pagination->legendText() }}">
- <x-laraknife.forms.combobox position="first" name="articletype" label="Articletype" :options="$optionsArticletype" class="lkn-autoupdate" width2="4" />
- <x-laraknife.forms.combobox position="last" name="markup" label="Markup" :options="$optionsMarkup" class="lkn-autoupdate" width2="4" />
- <x-laraknife.forms.string position="alone" name="text" label="Text" value="{{ $context->valueOf('title') }}" width2="10" />
- </x-laraknife.panels.filter>
- <x-laraknife.panels.index-button buttonType="new"/>
- <x-laraknife.panels.sortable-table :context="$context" :pagination="$pagination">
- <thead>
- <tr>
- <th></th>
- <th sortId="title">{{__('Title')}}</th>
- <th sortId="articletype_scope">{{__('Articletype')}}</th>
- <th sortId="markup_scope">{{__('Markup')}}</th>
- <th sortId="order">{{__('Order')}}</th>
- <th></th>
- </tr>
- </thead>
- <tbody>
-@foreach ($records as $article)
- <tr>
- <td><x-laraknife.icons.change-record module="article" no="{{ $article->id }}" /></td>
- <td><td><a href="/article-showpretty/{{ $article->id }}">{{$article->title}}</a></td>
- <td> {{ __($article->articletype_scope) }}</td>
- <td> {{ __($article->markup_scope) }}</td>
- <td>{{$article->order}}</td>
- <td><x-laraknife.icons.delete-record module="article" no="{{ $article->id }}" /></td>
- </tr>
-@endforeach
- </tbody>
- </x-laraknife.panels.sortable-table>
- </x-laraknife.panels.index>
-</form>
-@endsection
+++ /dev/null
-@extends('layouts.backend')
-
-@section('content')
- <form id="article-show" action="/article-show/{{ $context->model->id }}/{{ $mode }}" method="POST">
- @csrf
- @if($mode === 'delete')
- @method('DELETE')
- @endif
- <x-laraknife.panels.show title="{{ __($mode !== 'delete' ? 'An Article' : 'Deletion of an Article') }}" mode="{{$mode}}">
- <x-laraknife.forms.combobox position="first" name="articletype_scope" label="Articletype" :options="$optionsArticletype" width2="4" attribute="readonly"/>
- <x-laraknife.forms.combobox position="last" name="markup_scope" label="Markup" :options="$optionsMarkup" width2="4" attribute="readonly"/>
- <x-laraknife.forms.string position="alone" name="title" label="Title" value="{{ $context->valueOf('title') }}" width2="10" attribute="readonly" />
- <x-laraknife.forms.text position="alone" name="contents" label="Contents" value="{{ $context->valueOf('contents') }}" width2="10" attribute="readonly" rows="5" />
- <x-laraknife.forms.text position="alone" name="info" label="Info" value="{{ $context->valueOf('info') }}" width2="10" attribute="readonly" rows="2" />
- </x-laraknife.panels.show>
- </form>
-@endsection
+++ /dev/null
-@extends('layouts.backend')
-
-@section('content')
- <form id="article-show" action="/article-show/{{ $context->model->id }}" method="POST">
- @csrf
- <x-laraknife.panels.noform-text title="{{ $context->valueof('title') }}">
- <div class="row">
- {!! $context->valueOf('text') !!}
- </div>
- </x-laraknife.panels.noform-text>
- @if ($context->valueof('link') != null)
- <div class="row">
- <x-laraknife.forms.audio width1="5" width2="2" fileLink="{{ $context->valueof('link') }}" />
- </div>
- @endif
- </form>
-@endsection
<div class="collapse navbar-collapse" id="navbarTop">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
- <a class="nav-link" href="/menuitem-menu_main">Start</a>
+ <a class="nav-link" href="/page-showmenu/main">Start</a>
+ </li>
+ <li class="nav-item active">
+ <a class="nav-link" href="/menuitem-menu_main">Verwaltung</a>
</li>
<li>
<a class="nav-link" href="/public/doc/Impressum.pdf" target="_blank">{{ __('Imprint') }}</a>
--- /dev/null
+../../vendor/hamatoma/laraknife/resources/views/page/
\ No newline at end of file
use App\Http\Controllers\ReviewController;
use App\Http\Controllers\MenuitemController;
use App\Http\Controllers\ChapterController;
-use App\Http\Controllers\ArticleController;
+use App\Http\Controllers\PageController;
use App\Http\Controllers\SPropertyController;
Route::get('/', function () {
ChapterController::routes();
-ArticleController::routes();
+PageController::routes();