Compare commits

...
Sign in to create a new pull request.

8 commits

Author SHA1 Message Date
Jérémy Munsch
54560933a0
Readme answer 2022-08-10 12:14:51 +02:00
S. Hattry
f1b770cfab
ticket-908 2022-08-10 12:14:48 +02:00
S. Hattry
69262df7de
display the good state of prizes 2022-08-10 10:45:30 +02:00
S. Hattry
0f66cc8763
ticket 952 2022-08-10 10:45:24 +02:00
S. Hattry
0b68a0fc31
auto formater 2022-08-09 18:04:05 +02:00
S. Hattry
e91145b1e5
add TODO 2022-08-09 18:04:04 +02:00
S. Hattry
cfb3973639
EAN code required otherwise laravel error 2022-08-09 18:04:04 +02:00
S. Hattry
5e86a0976f
composer update + add file on git ignore 2022-08-09 18:04:02 +02:00
95 changed files with 2477 additions and 895 deletions

3
.gitignore vendored
View file

@ -25,5 +25,8 @@ yarn-error.log
package-lock.json
composer.lock
resources/front
resources/js/basic.js
.vscode
storage
README.txt
webpack.mix.js

View file

@ -13,4 +13,10 @@ php artisan create:admin
## CRON
```
php artisan users:deletenc à mettre 1 fois par jour
```
```
## TODO
```
- SH - Soucis de connexion / déconnexion quand le jeu est terminé et que l'adresse du jeu redirige vers une autre adresse : si on se déconnecte et qu'on revient sur le bo, on est toujours connecté
-> MJ - Pour que le cookie soit delete il ne faut pas renvoyer un 302 juste apres le disconnect
```

View file

@ -36,6 +36,9 @@ class PrizesController extends Controller
$p->arcadia_id = $prize->arcadia_id;
$p->label_one = $prize->label_one;
$p->label_many = $prize->label_many;
$p->arg_title = $prize->arg_title;
$p->arg_subtitle = $prize->arg_subtitle;
$p->arg_content = $prize->arg_content;
$p->quantity = $prize->quantity;
$p->arcadia_operation_code = $prize->arcadia_operation_code;
$p->arcadia_support_code = $prize->arcadia_support_code;
@ -56,6 +59,9 @@ class PrizesController extends Controller
$p->arcadia_id = $prize->arcadia_id;
$p->label_one = $prize->label_one;
$p->label_many = $prize->label_many;
$p->arg_title = $prize->arg_title;
$p->arg_subtitle = $prize->arg_subtitle;
$p->arg_content = $prize->arg_content;
$p->quantity = $prize->quantity;
$p->arcadia_operation_code = $prize->arcadia_operation_code;
$p->arcadia_support_code = $prize->arcadia_support_code;

View file

@ -164,7 +164,7 @@ class EnterCodeController extends Controller
'fieldValue' => "$codeEan->code"
];
}
$arcadiaMail = $this->apiCrm->ArcadiaOutgoingMail($crmId, $fields, 'game');
if ($arcadiaMail->status === 'KO') {
Mail::to(config('mail.MAIL_ADMIN'))->send(new CourrierArcadiaError(auth()->user()));

View file

@ -7,6 +7,7 @@ use App\Models\CodeEan;
use App\Models\Participation;
use App\Models\Settings;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Kwaadpepper\Serial\Exceptions\SerialCasterException;
@ -18,40 +19,60 @@ class ParticipateRequest extends FormRequest
* @return boolean
*/
public function authorize()
{
return auth()->check();
}
/**
* Prepare the data for validation.
*
* @return void
*/
protected function prepareForValidation()
{
/**
* * Check si les codes ean sont utilisés, auquel cas
* * on test celui envoyé pour savoir s'il est correct.
* Modif demande vincent :
* Tester code ean existe avec 13, puis 8 puis 7 chars
* Si le code EAN est trouvé dans la liste, alors on prend l'objet correspondant,
* sinon on prend le premier objet qui contient les 7 1er chiffres (cas des EAN pds)
*
* Dans la base chaque code ean doit être rentré dans sa valeur absolue
* càd que les code ean 8 sont de longueur 8, 7 de longueur7 et 13 de longueur 13.
*/
if (app(Settings::class)->use_ean_codes) {
$this->merge([
'code_ean' => \in_array(Str::length($this->code_ean), [13, 8, 7]) ?
CodeEan::where('code', $this->code_ean)
->orWhere('code', 'LIKE', Str::limit($this->code_ean, 13, '') . '%')
->orWhere('code', 'LIKE', Str::limit($this->code_ean, 8, '') . '%')
->orWhere('code', 'LIKE', Str::limit($this->code_ean, 7, '') . '%')
->first() : null
]);
}
// ! We need to validate ean is 13 before resolving ean code.
/** @throws \Illuminate\Validation\ValidationException */
Validator::validate($this->all(), [
'code_ean' => 'required|digits:13'
], $this->attributes());
// * Union pour faire des recherches séparée en une seule requête.
/** @var \App\Models\CodeEan|null */
$codeEan = CodeEan::where('code', $this->code_ean)
->union(CodeEan::where('code', Str::limit($this->code_ean, 8, '')))
->union(CodeEan::where('code', Str::limit($this->code_ean, 7, '')))
->first() ?? false;
$this->merge(['code_ean' => $codeEan]);
} //end if
try {
if (is_string($this->code)) {
$this->merge([
'serial' => $this->code,
'code' => Code::whereId(Code::serialToInt(Str::upper($this->code)))->first() ?? false,
]);
}
// phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
$this->merge([
'serial' => $this->code,
'code' => Code::whereId(Code::serialToInt(Str::upper(\strval($this->code))))->first() ?? false,
]);
} catch (SerialCasterException $e) {
// Ignore.
// * Provoquer l'affichage code incorrect.
$this->merge([
'code' => false,
]);
} finally {
$this->merge([
'accept_rules' => $this->accept_rules ? true : false
]);
}
return auth()->check();
}
/**
@ -62,15 +83,7 @@ class ParticipateRequest extends FormRequest
public function rules()
{
$rules = [
'accept_rules' => [
'required', 'boolean',
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
function ($attribute, $value, $fail) {
if (!$value) {
$fail('Pour participer, vous devez accepter le règlement du jeu.');
}
}
],
'accept_rules' => 'required|boolean|accepted',
'code' => [
'required',
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
@ -80,10 +93,10 @@ class ParticipateRequest extends FormRequest
!\is_object($value) or
\get_class($value) !== Code::class
) {
$fail('Code incorrect, veuillez réessayer.');
$fail('Code unique incorrect, veuillez réessayer.');
return false;
} elseif ($value->code_used === 1) {
$fail('Ce code n\'est plus utilisable.');
$fail('Ce code unique n\'est plus utilisable.');
return false;
}
@ -93,7 +106,7 @@ class ParticipateRequest extends FormRequest
['user_id', auth()->user()->id]
]);
if ($query->exists()) {
$fail('Vous avez déjà utilisé ce code.');
$fail('Vous avez déjà utilisé ce code unique.');
}
/** @var \App\Models\Settings $settings */
@ -105,13 +118,13 @@ class ParticipateRequest extends FormRequest
// * Gestion du nombre d'utilisation d'un code.
if ($codeNbUsage >= $settings->nb_unique_code_use) {
$this->code->code_used = 1;
return back()->withErrors("Ce code n'est plus utilisable.");
return back()->withErrors("Ce code unique n'est plus utilisable.");
} else {
if ($codeNbUsage + 1 >= $settings->nb_unique_code_use) {
$this->code->code_used = 1;
}
}
$this->code->save();
$this->code->saveOrFail();
}
]
];
@ -132,4 +145,18 @@ class ParticipateRequest extends FormRequest
}
return $rules;
}
/**
* Get custom attributes for validator errors.
*
* @return array
*/
public function attributes()
{
return [
'code_ean' => \trans('code barre'),
'accept_rules' => \trans('règlements du jeu'),
'code' => \trans('code unique'),
];
}
}

View file

@ -26,6 +26,7 @@ class StoreProductRequest extends FormRequest
{
return [
'name' => 'required|string|min:2|max:255',
'code_ean' => 'required|numeric',
'picture' => [
'image',
'mimes:jpeg,png,jpg',

View file

@ -26,6 +26,7 @@ class UpdateProductRequest extends FormRequest
{
return [
'name' => 'required|string|min:2|max:255',
'code_ean' => 'required|numeric',
'picture' => [
'image',
'mimes:jpeg,png,jpg',

View file

@ -33,7 +33,10 @@
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
"sort-packages": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
},
"extra": {
"laravel": {

1250
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -17,6 +17,9 @@ class CreatePrizes extends Migration
$table->id();
$table->string("label_one");
$table->string("label_many");
$table->string("arg_title");
$table->string("arg_subtitle");
$table->text("arg_content");
$table->integer("quantity");
$table->integer("arcadia_operation_code")->default(0);
$table->integer("arcadia_support_code")->default(0);

View file

@ -24,6 +24,9 @@ class PrizeSeeder extends Seeder
$prize->arcadia_id = 0;
$prize->label_one = 'Lot 1';
$prize->label_many = 'Lots 1';
$prize->arg_title = 'Titre Lot 1';
$prize->arg_subtitle = 'Sous-titre Lot 1';
$prize->arg_content = 'Argumentaire du lot 1';
$prize->quantity = 1;
$prize->gain_view_id = $gainview->id;
$prize->save();
@ -35,8 +38,11 @@ class PrizeSeeder extends Seeder
$prize = new Prize();
$prize->arcadia_id = 0;
$prize->label_one = 'Lot ';
$prize->label_one = 'Lot 2';
$prize->label_many = 'Lots 2';
$prize->arg_title = 'Titre Lot 2';
$prize->arg_subtitle = 'Sous-titre Lot 2';
$prize->arg_content = 'Argumentaire du lot 2';
$prize->quantity = 2;
$prize->gain_view_id = $gainview->id;
$prize->save();

View file

@ -26,7 +26,7 @@
<tr v-for="item in datas" v-bind:key="item.id">
<td>{{item.appear_date}}</td>
<td>{{item.prize.label_one}}</td>
<td>{{item.won === 0 ? "Non" : "Oui"}}</td>
<td>{{item.won === false ? "Non" : "Oui"}}</td>
</tr>
</tbody>
</table>

View file

@ -1,243 +1,362 @@
<template>
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-md-3">
Lots
</div>
<div class="col-md-6 text-center">
<transition name="fade">
<span v-show="processing">
{{ response }}
</span>
</transition>
</div>
<div class="col-md-3 text-right">
<button class="btn btn-primary btn-sm text-white float-right" @click="saveData()" :disabled="processing">
Sauvegarder
<div class="spinner-border spinner-border-sm text-light" role="status" v-show="processing">
<span class="sr-only">Loading...</span>
</div>
</button>
</div>
</div>
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-md-3">Lots</div>
<div class="col-md-6 text-center">
<transition name="fade">
<span v-show="processing">
{{ response }}
</span>
</transition>
</div>
<!-- TODO : Mettre chaque lot en onglet -->
<div class="card-body">
<div class="col-md-10 offset-md-1">
<div v-for="(item, index) in datas">
<table class="table table-bordered">
<tbody>
<tr>
<td class="w-50">
ID du lot <span class="required-asterisk">*</span><br/>
<small class="text-muted">ATTENTION ! Bien vérifier que chaque id de lot est unique et correspond bien aux id de la table des IG</small>
</td>
<td class="w-50 align-middle"><input class="form-control form-control-sm" v-model="item.arcadia_id" type="number" required></td>
</tr>
<tr>
<td>
Libellé au singulier <span class="required-asterisk">*</span>
</td>
<td class="align-middle"><input class="form-control form-control-sm" v-model="item.label_one" type="text" required></td>
</tr>
<tr>
<td>
Libellé au pluriel <span class="required-asterisk">*</span>
</td>
<td class="align-middle"><input class="form-control form-control-sm" v-model="item.label_many" type="text" required></td>
</tr>
<tr>
<td>
Quantité <span class="required-asterisk">*</span>
</td>
<td class="align-middle"><input class="form-control form-control-sm" v-model="item.quantity" type="number" required></td>
</tr>
<tr>
<td>
Code Opération Arcadia <span class="required-asterisk">*</span><br/>
<small class="text-muted">Si ce champ est renseigné, un courrier sera créé en CRM pour l'export Arcadia</small>
</td>
<td class="align-middle"><input class="form-control form-control-sm" v-model="item.arcadia_operation_code" type="number" required></td>
</tr>
<tr>
<td>
Code Support Arcadia <span class="required-asterisk">*</span><br/>
<small class="text-muted">Si ce champ est renseigné, un courrier sera créé en CRM pour l'export Arcadia</small>
</td>
<td class="align-middle"><input class="form-control form-control-sm" v-model="item.arcadia_support_code" type="number" required></td>
</tr>
<tr>
<td>
Pdf preuve de gain
</td>
<td class="align-middle">
<input type="file" accept="application/pdf" name="pdf_winning_proof" v-on:change="handleFileUpload(index)">
<span v-if="item.pdf_winning_proof != null">Fichier actuel : <span class="badge badge-primary">{{item.pdf_winning_proof}}</span></span>
</td>
</tr>
<tr>
<td>
Preuve de gain obligatoire <span class="required-asterisk">*</span><br/>
<small class="text-muted">Si activé, il sera obligatoire de fournir des preuves de gain pour ce lot (sticker, ticket de caisse, code barre).</small>
</td>
<td class="align-middle">
<div class="onoffswitch">
<input type="checkbox" :id="'need_proof_' + index" class="onoffswitch-checkbox" v-model="item.need_proof">
<label class="onoffswitch-label" :for="'need_proof_' + index">
<span class="onoffswitch-inner"></span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</td>
</tr>
<tr>
<td>
Page de gain du lot <span class="required-asterisk">*</span><br/>
</td>
<td class="align-middle">
<select class="custom-select" v-model="item.gain_view_id">
<option v-for="gv in gainviews" :value="gv.id" v-bind:key="gv.id">{{gv.name}}</option>
</select>
</td>
</tr>
<tr>
<td>
Supprimer le lot
</td>
<td class="align-middle">
<button @click="removeItem(index)" class="btn btn-danger btn-sm">Supprimer</button>
</td>
</tr>
</tbody>
</table>
<hr/>
</div>
<div class="form-group text-right">
<button class="btn btn-primary btn-sm text-white" @click="newItem">Ajouter un lot</button>
<input type="hidden" :name="name" :value="JSON.stringify(datas)" required>
</div>
<div class="col-md-3 text-right">
<button
class="btn btn-primary btn-sm text-white float-right"
@click="saveData()"
:disabled="processing"
>
Sauvegarder
<div
class="spinner-border spinner-border-sm text-light"
role="status"
v-show="processing"
>
<span class="sr-only">Loading...</span>
</div>
</button>
</div>
</div>
</div>
<!-- TODO : Mettre chaque lot en onglet -->
<div class="card-body">
<div class="col-md-10 offset-md-1">
<div v-for="(item, index) in datas">
<table class="table table-bordered">
<tbody>
<tr>
<td class="w-50">
ID du lot <span class="required-asterisk">*</span><br />
<small class="text-muted"
>ATTENTION ! Bien vérifier que chaque id de lot est unique et
correspond bien aux id de la table des IG</small
>
</td>
<td class="w-50 align-middle">
<input
class="form-control form-control-sm"
v-model="item.arcadia_id"
type="number"
required
/>
</td>
</tr>
<tr>
<td>Libellé au singulier <span class="required-asterisk">*</span></td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.label_one"
type="text"
required
/>
</td>
</tr>
<tr>
<td>Libellé au pluriel <span class="required-asterisk">*</span></td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.label_many"
type="text"
required
/>
</td>
</tr>
<tr>
<td colspan="2">
<div>
Argumentaire
<table class="table">
<tr>
<td>Titre <span class="required-asterisk">*</span></td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.arg_title"
type="text"
required
/>
</td>
</tr>
<tr>
<td>Sous-titre</td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.arg_subtitle"
type="text"
/>
</td>
</tr>
<tr>
<td>Texte <span class="required-asterisk">*</span></td>
<td class="align-middle">
<ck-editor-component-vue
@input="(dbtext) => (item.arg_content = dbtext)"
:id="`arg_content${index}`"
:name="`arg_content${index}`"
:required="true"
:dbtext="item.arg_content"
/>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td>Quantité <span class="required-asterisk">*</span></td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.quantity"
type="number"
required
/>
</td>
</tr>
<tr>
<td>
Code Opération Arcadia <span class="required-asterisk">*</span><br />
<small class="text-muted"
>Si ce champ est renseigné, un courrier sera créé en CRM pour l'export
Arcadia</small
>
</td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.arcadia_operation_code"
type="number"
required
/>
</td>
</tr>
<tr>
<td>
Code Support Arcadia <span class="required-asterisk">*</span><br />
<small class="text-muted"
>Si ce champ est renseigné, un courrier sera créé en CRM pour l'export
Arcadia</small
>
</td>
<td class="align-middle">
<input
class="form-control form-control-sm"
v-model="item.arcadia_support_code"
type="number"
required
/>
</td>
</tr>
<tr>
<td>Pdf preuve de gain</td>
<td class="align-middle">
<input
type="file"
accept="application/pdf"
name="pdf_winning_proof"
v-on:change="handleFileUpload($event, index)"
/>
<span v-if="item.pdf_winning_proof != null"
>Fichier actuel :
<span class="badge badge-primary">{{
item.pdf_winning_proof
}}</span></span
>
</td>
</tr>
<tr>
<td>
Preuve de gain obligatoire <span class="required-asterisk">*</span
><br />
<small class="text-muted"
>Si activé, il sera obligatoire de fournir des preuves de gain pour ce
lot (sticker, ticket de caisse, code barre).</small
>
</td>
<td class="align-middle">
<div class="onoffswitch">
<input
type="checkbox"
:id="'need_proof_' + index"
class="onoffswitch-checkbox"
v-model="item.need_proof"
/>
<label class="onoffswitch-label" :for="'need_proof_' + index">
<span class="onoffswitch-inner"></span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</td>
</tr>
<tr>
<td>
Page de gain du lot <span class="required-asterisk">*</span><br />
</td>
<td class="align-middle">
<select class="custom-select" v-model="item.gain_view_id">
<option v-for="gv in gainviews" :value="gv.id" v-bind:key="gv.id">
{{ gv.name }}
</option>
</select>
</td>
</tr>
<tr>
<td>Supprimer le lot</td>
<td class="align-middle">
<button @click="removeItem(index)" class="btn btn-danger btn-sm">
Supprimer
</button>
</td>
</tr>
</tbody>
</table>
<hr />
</div>
<div class="form-group text-right">
<button class="btn btn-primary btn-sm text-white" @click="newItem">
Ajouter un lot
</button>
<input type="hidden" :name="name" :value="JSON.stringify(datas)" required />
</div>
</div>
</div>
</div>
</template>
<script>
export default {
mounted() {
console.log('GainViews Component mounted.');
this.datas = JSON.parse(this.dbdatas);
this.gainviews = JSON.parse(this.dbgainviews);
},
props: [
'name',
'dbdatas',
'dbgainviews'
],
data() {
return {
datas: [],
gainviews: [],
response: null,
processing: false,
pdf_winning_proof: []
}
},
watch: {
import ckEditorComponentVue from "./ckEditorComponent.vue";
},
methods: {
handleFileUpload(index) {
let files = event.target.files || event.dataTransfer.files;
if (!files.length)
return;
export default {
components: {
ckEditorComponentVue,
},
mounted() {
console.log("GainViews Component mounted.");
this.datas = JSON.parse(this.dbdatas);
this.gainviews = JSON.parse(this.dbgainviews);
},
props: ["name", "dbdatas", "dbgainviews"],
data() {
return {
datas: [],
gainviews: [],
response: null,
processing: false,
pdf_winning_proof: [],
};
},
watch: {},
methods: {
handleFileUpload(event, index) {
let files = event.target.files || event.dataTransfer.files;
if (!files.length) return;
this.pdf_winning_proof[index] = files[0];
this.pdf_winning_proof[index] = files[0];
if (!this.pdf_winning_proof[index]) {
event.preventDefault();
alert('Aucun fichier choisi.');
return;
}
if (!this.pdf_winning_proof[index]) {
event.preventDefault();
alert("Aucun fichier choisi.");
return;
}
if (this.pdf_winning_proof[index].size > (1024 * 1024) * 20) {
event.preventDefault();
alert('Fichier trop volumineux (> 20MB)');
return;
}
},
newItem() {
this.datas.push({
id: null,
arcadia_id: null,
label_one: '',
label_many: '',
quantity: 0,
notifications: 0,
additional_form: 0,
arcadia_operation_code: null,
arcadia_support_code: null,
pdf_winning_proof: null,
need_proof: 1,
gain_view_id: null
});
},
removeItem(index) {
if (confirm("Êtes-vous sûr(e) ?")) {
if (this.datas[index]['id'] !== undefined) {
this.processing = true;
this.response = "Suppression en cours...";
axios.post('/bo/ajax/delete-prize', {
id: this.datas[index]['id'],
}).then(
response => (this.response = response.data)
)
.catch(function (error) {
console.log(error);
this.response = "Erreur lors de la suppression.";
});
this.datas.splice(index, 1);
setTimeout(function() {
this.processing = false;
}.bind(this), 3000);
} else {
this.datas.splice(index, 1);
}
}
},
saveData() {
let formData = new FormData();
$.each(this.pdf_winning_proof, function(index, value) {
formData.append('pdf[' + index + "]", value);
});
formData.append('prizes', JSON.stringify(this.datas));
this.processing = true;
this.response = "En cours de sauvegarde..."
axios.post('/bo/ajax/save-prizes', formData)
.then(
(response) => {
this.datas = response.data;
this.response = "Sauvegarde terminée !";
this.processing = false;
}
)
.catch(function (error) {
console.log(error);
this.response = "Erreur lors de la sauvegarde.";
this.processing = false;
});
}
if (this.pdf_winning_proof[index].size > 1024 * 1024 * 20) {
event.preventDefault();
alert("Fichier trop volumineux (> 20MB)");
return;
}
},
newItem() {
this.datas.push({
id: null,
arcadia_id: null,
label_one: "",
label_many: "",
arg_title: "",
arg_subtitle: "",
arg_content: "",
quantity: 0,
notifications: 0,
additional_form: 0,
arcadia_operation_code: null,
arcadia_support_code: null,
pdf_winning_proof: null,
need_proof: 1,
gain_view_id: null,
});
},
removeItem(index) {
if (confirm("Êtes-vous sûr(e) ?")) {
if (this.datas[index]["id"] !== undefined) {
this.processing = true;
this.response = "Suppression en cours...";
axios
.post("/bo/ajax/delete-prize", {
id: this.datas[index]["id"],
})
.then((response) => (this.response = response.data))
.catch(function (error) {
console.log(error);
this.response = "Erreur lors de la suppression.";
});
this.datas.splice(index, 1);
setTimeout(
function () {
this.processing = false;
}.bind(this),
3000
);
} else {
this.datas.splice(index, 1);
}
}
}
},
saveData() {
let formData = new FormData();
$.each(this.pdf_winning_proof, function (index, value) {
formData.append("pdf[" + index + "]", value);
});
formData.append("prizes", JSON.stringify(this.datas));
this.processing = true;
this.response = "En cours de sauvegarde...";
axios
.post("/bo/ajax/save-prizes", formData)
.then((response) => {
this.datas = response.data;
this.response = "Sauvegarde terminée !";
this.processing = false;
})
.catch(function (error) {
console.log(error);
this.response = "Erreur lors de la sauvegarde.";
this.processing = false;
});
},
},
};
</script>
<style scoped>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
</style>

View file

@ -0,0 +1,252 @@
<template>
<div>
<div class="wordCounter">
<span class="words"
><u>Mots</u>&nbsp;:&nbsp;<b>{{ words }}</b></span
>
<span class="chars"
><u>Caractères</u>&nbsp;:&nbsp;<b>{{ chars }}</b></span
>
</div>
<div ref="ckeditor"></div>
<input
:id="internalId"
class="form-control"
type="hidden"
:name="name"
:value="internalText"
:required="internalRequired"
/>
</div>
</template>
<script>
import "../vendor/ckeditor/build/ckeditor";
// import { CKUploadAdaptater } from '../../back/CkUploadAdaptater'
export default {
props: ["id", "required", "name", "dbtext"],
mounted() {
this.internalText = this.dbtext;
this.internalId = this.id ? this.id : "";
this.internalRequired = this.required ? this.required : false;
this.makeSuperBuild();
},
data() {
return {
internalText: "",
internalId: "",
internalRequired: false,
editor: null,
words: 0,
chars: 0,
emitTimer: null,
};
},
watch: {
dbtext() {
if (this.internalText != this.dbtext) {
this.internalText = this.dbtext;
if (this.editor) {
this.editor.setData(this.internalText);
}
}
},
},
methods: {
makeSuperBuild() {
let self = this;
ClassicEditor.create(self.$refs.ckeditor, {
// extraPlugins: [(editor) => {
// editor.plugins.get( 'FileRepository' ).createUploadAdapter = ( loader ) => {
// // Configure the URL to the upload script in your back-end here!
// return new CKUploadAdaptater(loader);
// }
// }],
wordCount: {
onUpdate: (stats) => {
this.chars = stats.characters;
this.words = stats.words;
},
},
link: {
// Automatically add target="_blank" and rel="noopener noreferrer" to all external links.
addTargetToExternalLinks: true,
// Let the users control the "download" attribute of each link.
decorators: [
{
mode: "manual",
label: "Ouvrir dans un nouvel onglet",
attributes: {
target: "_blank",
rel: "noopener noreferrer",
},
},
],
},
typing: {
transformations: {
extra: [
{ from: ":)", to: "😊" },
{ from: ":-P", to: "😛" },
{ from: "8-)", to: "😎" },
{ from: ";-)", to: "😉" },
{ from: ":-D", to: "😄" },
{ from: ":twisted:", to: "😈" },
{ from: ":mrgreen:", to: "😁" },
{ from: ":lol:", to: "😆" },
{ from: ":roll:", to: "🙄" },
{ from: ":-?", to: "😕" },
{ from: ":cry:", to: "😢" },
{ from: ":-o", to: "😮" },
{ from: ":evil:", to: "😡" },
{ from: ":-|", to: "😐" },
{ from: ":oops:", to: "😳" },
{ from: ":-x", to: "😠" },
{ from: "8-O", to: "😲" },
{ from: ":-(", to: "😧" },
{ from: ":arrow:", to: "➡" },
{ from: ":idea:", to: "💡" },
],
},
},
mediaEmbed: {
previewsInData: false,
removeProviders: [
"instagram",
"twitter",
"googleMaps",
"flickr",
"facebook",
"dailymotion",
"spotify",
"youtube",
],
// see https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-media-embed/src/mediaembedediting.js
providers: [
{
// display local videos in oembed tags
name: "localVideo",
url: /^(\/(?:content|storage)\/.*)/,
html: (match) => {
let path = match[1];
return (
'<video controls allowfullscreen style="max-width: 90%; margin: 0 auto; display: block;">' +
`<source src="${path}" type="video/mp4">` +
`<p>Votre navigateur ne prend pas en charge les vidéos HTML5. Voici <a href="${path}">un lien pour télécharger la vidéo</a>.</p>` +
"</video>"
);
},
},
],
},
toolbar: {
items: [
"bold",
"italic",
"underline",
"|",
"removeFormat",
"|",
"undo",
"redo",
],
},
table: {
contentToolbar: [
"tableColumn",
"tableRow",
"mergeTableCells",
"tableProperties",
"tableCellProperties",
"toggleTableCaption",
],
// Configuration of the TableProperties plugin.
tableProperties: {
// ...
},
// Configuration of the TableCellProperties plugin.
tableCellProperties: {
// ...
},
},
language: "fr",
image: {
toolbar: [
"imageTextAlternative",
"imageStyle:inline",
"imageStyle:block",
"imageStyle:side",
"linkImage",
],
},
// video: {
// resizeUnit: 'px',
// // Configure the available video resize options.
// resizeOptions: [
// {
// name: 'videoResize:original',
// value: null,
// label: 'Original',
// icon: 'original'
// },
// {
// name: 'videoResize:50',
// value: 50,
// label: '50',
// icon: 'medium'
// },
// {
// name: 'videoResize:75',
// value: '75',
// label: '75',
// icon: 'large'
// }
// ]
// }
})
.then((editor) => {
editor.setData(this.internalText);
self.editor = editor;
editor.model.document.on("change:data", () => {
// * Keep track of internal editor
let data = editor.getData();
self.$set(self, "internalText", data);
self.$emit("input", data);
});
})
.catch((error) => {
console.error("Oops, something went wrong!");
console.error(
"Please, report the following error on https://github.com/ckeditor/ckeditor5/issues with the build id and the error stack trace:"
);
console.warn("Build id: x0tjc6omqq4d-iydt761tuj51");
console.error(error);
});
},
},
};
</script>
<style lang="scss">
.wordCounter {
color: initial;
border: 1px solid rgb(196, 196, 196);
border-bottom: 0;
background-color: #fafafa;
position: relative;
.words {
position: relative;
left: 2rem;
}
.chars {
position: absolute;
left: 9rem;
}
}
</style>

View file

@ -0,0 +1 @@
node_modules

49
resources/js/vendor/ckeditor/LICENSE.md vendored Normal file
View file

@ -0,0 +1,49 @@
Software License Agreement
==========================
Copyright (c) 2014-2021, CKSource - Frederico Knabben. All rights reserved.
Online builder code samples are licensed under the terms of the MIT License (see Appendix A):
http://en.wikipedia.org/wiki/MIT_License
CKEditor 5 collaboration features are only available under a commercial license. [Contact us](https://ckeditor.com/contact/) for more details.
Free 30-days trials of CKEditor 5 collaboration features are available:
* https://ckeditor.com/collaboration/ - Real-time collaboration (with all features).
* https://ckeditor.com/collaboration/comments/ - Inline comments feature (without real-time collaborative editing).
* https://ckeditor.com/collaboration/track-changes/ - Track changes feature (without real-time collaborative editing).
Trademarks
----------
CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
and product names are trademarks, registered trademarks or service
marks of their respective holders.
---
Appendix A: The MIT License
---------------------------
The MIT License (MIT)
Copyright (c) 2014-2021, CKSource - Frederico Knabben
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

68
resources/js/vendor/ckeditor/README.md vendored Normal file
View file

@ -0,0 +1,68 @@
# CKEditor 5 editor generated with the online builder
This repository presents a CKEditor 5 editor build generated by the [Online builder tool](https://ckeditor.com/ckeditor-5/online-builder)
## Quick start
1. Open the `sample/index.html` page in the browser.
If you picked the real-time collaboration plugins:
2. Fill the dialog with correct token, websocket and upload URL endpoints. If you do not have these yet or do not know their meaning, [contact us](https://ckeditor.com/contact/).
3. Copy the URL and share it or paste in another tab to enjoy real-time collaborative editing.
If you picked the non-real-time collaboration plugins:
2. Fill the prompt with the license key. If you do not have the license key yet [contact us](https://ckeditor.com/contact/).
## Configuring build
Changes like changing toolbar items, changing order of icons or customizing plugin configurations should be relatively easy to make. Open the `sample/index.html` file and edit the script that initialized the CKEditor 5. Save the file and refresh the browser. That's all.
*Note:* If you have any problems with browser caching use the `Ctrl + R` or `Cmd + R` shortcut depending on your system.
However if you want to remove or add a plugin to the build you need to follow the next step of this guide.
Note that it is also possible to go back to the [Online builder tool](https://ckeditor.com/ckeditor-5/online-builder) and pick other set of plugins. But we encourage you to try the harder way and to learn the principles of Node.js and CKEditor 5 ecosystems that will allow you to do more cool things in the future!
### Installation
In order to rebuild the application you need to install all dependencies first. To do it, open the terminal in the project directory and type:
```
npm install
```
Make sure that you have the `node` and `npm` installed first. If not, then follow the instructions on the [Node.js documentation page](https://nodejs.org/en/).
### Adding or removing plugins
Now you can install additional plugin in the build. Just follow the [Adding a plugin to an editor tutorial](https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/installing-plugins.html#adding-a-plugin-to-an-editor)
### Rebuilding editor
If you have already done the [Installation](#installation) and [Adding or removing plugins](#adding-or-removing-plugins) steps, you're ready to rebuild the editor by running the following command:
```
npm run build
```
This will build the CKEditor 5 to the `build` directory. You can open your browser and you should be able to see the changes you've made in the code. If not, then try to refresh also the browser cache by typing `Ctrl + R` or `Cmd + R` depending on your system.
## What's next?
Follow the guides available on https://ckeditor.com/docs/ckeditor5/latest/framework/index.html and enjoy the document editing.
## FAQ
| Where is the place to report bugs and feature requests?
You can create an issue on https://github.com/ckeditor/ckeditor5/issues including the build id - `unyb7c61pdjq-xt0bz4ltrghq`. Make sure that the question / problem is unique, please look for a possibly asked questions in the search box. Duplicates will be closed.
| Where can I learn more about the CKEditor 5 framework?
Here: https://ckeditor.com/docs/ckeditor5/latest/framework/
| Is it possible to use online builder with common frameworks like React, Vue or Angular?
Not yet, but it these integrations will be available at some point in the future.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const n=e.af=e.af||{};n.dictionary=Object.assign(n.dictionary||{},{"%0 of %1":"%0 van %1","Align center":"Belyn in die middel","Align left":"Belyn links","Align right":"Belyn regs","Block quote":"Verwysingsaanhaling",Bold:"Vet",Cancel:"Kanselleer",Italic:"Kursief",Justify:"Belyn beide kante","Remove color":"Verwyder kleur","Remove Format":"Verwyder formatering","Restore default":"Herstel verstek",Save:"Stoor","Show more items":"Wys meer items","Text alignment":"Teksbelyning","Text alignment toolbar":"Teksbelyning nutsbank",Underline:"Onderstreep"}),n.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const t=e.ast=e.ast||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Bold:"Negrina","Break text":"","Bulleted List":"Llista con viñetes","Bulleted list styles toolbar":"",Cancel:"Encaboxar","Centered image":"","Change image text alternative":"",Circle:"",Decimal:"","Decimal with leading zero":"","Dim grey":"",Disc:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Full size image":"Imaxen a tamañu completu",Green:"",Grey:"","Image resize list":"","Image toolbar":"","image widget":"complementu d'imaxen","In line":"","Insert image":"",Italic:"Cursiva","Left aligned image":"","Light blue":"","Light green":"","Light grey":"",Link:"Enllazar","Link image":"","Link URL":"URL del enllaz","List properties":"","Lower-latin":"","Lower–roman":"",Next:"","Numbered List":"Llista numberada","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Previous:"",Purple:"",Red:"",Redo:"Refacer","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"Editor de testu arriquecíu","Right aligned image":"",Save:"Guardar","Show more items":"","Side image":"Imaxen llateral",Square:"","Start at":"","Start index must be greater than 0.":"","Text alternative":"","This link has no URL":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"",Undo:"Desfacer",Unlink:"Desenllazar","Upload failed":"","Upper-latin":"","Upper-roman":"",White:"","Wrap text":"",Yellow:""}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(a){const i=a.bs=a.bs||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 od %1","Align center":"Centrirati","Align left":"Lijevo poravnanje","Align right":"Desno poravnanje",Big:"","Block quote":"Citat",Bold:"Podebljano","Break text":"",Cancel:"Poništi","Centered image":"Centrirana slika","Change image text alternative":"Promijeni ALT atribut za sliku","Choose heading":"Odaberi naslov",Default:"Zadani","Document colors":"","Font Color":"Boja","Font Family":"Font","Font Size":"Veličina fonta","Full size image":"",Heading:"Naslov","Heading 1":"Naslov 1","Heading 2":"Naslov 2","Heading 3":"Naslov 3","Heading 4":"Naslov 4","Heading 5":"Naslov 5","Heading 6":"Naslov 6","Horizontal line":"Horizontalna linija",Huge:"","Image resize list":"Lista veličina slike","Image toolbar":"","image widget":"","In line":"","Insert image":"Umetni sliku",Italic:"Zakrivljeno",Justify:"","Left aligned image":"Lijevo poravnata slika",Original:"Original",Paragraph:"Paragraf","Remove color":"Ukloni boju","Resize image":"Promijeni veličinu slike","Resize image to %0":"","Resize image to the original size":"Postavi originalnu veličinu slike","Restore default":"Vrati na zadano","Right aligned image":"Desno poravnata slika",Save:"Sačuvaj","Show more items":"Prikaži više stavki","Side image":"",Small:"","Text alignment":"Poravnanje teksta","Text alignment toolbar":"Traka za poravnanje teksta","Text alternative":"ALT atribut",Tiny:"",Underline:"Podcrtano","Upload failed":"Učitavanje slike nije uspjelo","Wrap text":"Prelomi tekst"}),i.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const i=e.eo=e.eo||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Bold:"grasa","Break text":"","Bulleted List":"Bula Listo","Bulleted list styles toolbar":"",Cancel:"Nuligi","Centered image":"","Change image text alternative":"Ŝanĝu la alternativan tekston de la bildo","Choose heading":"Elektu ĉapon",Circle:"",Decimal:"","Decimal with leading zero":"","Dim grey":"",Disc:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Full size image":"Bildo kun reala dimensio",Green:"",Grey:"",Heading:"Ĉapo","Heading 1":"Ĉapo 1","Heading 2":"Ĉapo 2","Heading 3":"Ĉapo 3","Heading 4":"","Heading 5":"","Heading 6":"","Image resize list":"","Image toolbar":"","image widget":"bilda fenestraĵo","In line":"","Insert image":"Enmetu bildon",Italic:"kursiva","Left aligned image":"","Light blue":"","Light green":"","Light grey":"",Link:"Ligilo","Link image":"","Link URL":"URL de la ligilo","List properties":"","Lower-latin":"","Lower–roman":"",Next:"","Numbered List":"Numerita Listo","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Paragraph:"Paragrafo",Previous:"",Purple:"",Red:"",Redo:"Refari","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"Redaktilo de Riĉa Teksto","Right aligned image":"",Save:"Konservi","Show more items":"","Side image":"Flanka biildo",Square:"","Start at":"","Start index must be greater than 0.":"","Text alternative":"Alternativa teksto","This link has no URL":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"",Undo:"Malfari",Unlink:"Malligi","Upload failed":"","Upper-latin":"","Upper-roman":"",White:"","Wrap text":"",Yellow:""}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const i=e.eu=e.eu||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"","Block quote":"Aipua",Blue:"",Bold:"Lodia","Break text":"","Bulleted List":"Buletdun zerrenda","Bulleted list styles toolbar":"",Cancel:"Utzi","Centered image":"Zentratutako irudia","Change image text alternative":"Aldatu irudiaren ordezko testua","Choose heading":"Aukeratu izenburua",Circle:"",Decimal:"","Decimal with leading zero":"","Dim grey":"",Disc:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Full size image":"Tamaina osoko irudia",Green:"",Grey:"",Heading:"Izenburua","Heading 1":"Izenburua 1","Heading 2":"Izenburua 2","Heading 3":"Izenburua 3","Heading 4":"","Heading 5":"","Heading 6":"","Image resize list":"","Image toolbar":"","image widget":"irudi widgeta","In line":"","Insert image":"Txertatu irudia",Italic:"Etzana","Left aligned image":"Ezkerrean lerrokatutako irudia","Light blue":"","Light green":"","Light grey":"",Link:"Esteka","Link image":"","Link URL":"Estekaren URLa","List properties":"","Lower-latin":"","Lower–roman":"",Next:"","Numbered List":"Zenbakidun zerrenda","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Paragraph:"Paragrafoa",Previous:"",Purple:"",Red:"",Redo:"Berregin","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"Testu aberastuaren editorea","Right aligned image":"Eskuinean lerrokatutako irudia",Save:"Gorde","Show more items":"","Side image":"Alboko irudia",Square:"","Start at":"","Start index must be greater than 0.":"","Text alternative":"Ordezko testua","This link has no URL":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"Azpimarra",Undo:"Desegin",Unlink:"Desestekatu","Upload failed":"Kargatzeak huts egin du","Upper-latin":"","Upper-roman":"",White:"","Wrap text":"",Yellow:""}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(o){const e=o.gu=o.gu||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"","Block quote":" વિચાર ટાંકો",Bold:"ઘાટુ - બોલ્ડ્",Cancel:"",Italic:"ત્રાંસુ - ઇટલિક્","Remove color":"","Restore default":"",Save:"","Show more items":"",Underline:"નીચે લિટી - અન્ડરલાઇન્"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const a=e.jv=e.jv||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%0 saking %1","Align center":"Rata tengah","Align left":"Rata kiwa","Align right":"Rata tengen",Big:"Ageng","Blue marker":"Penandha biru",Bold:"Kandhel","Break text":"","Bulleted List":"","Bulleted list styles toolbar":"",Cancel:"Batal","Centered image":"Gambar ing tengah","Change image text alternative":"","Choose heading":"",Circle:"Bunder",Decimal:"","Decimal with leading zero":"",Default:"Default",Disc:"Kaset","Document colors":"Warni dokumen","Font Color":"Warni aksara","Font Family":"Jinising Aksara","Font Size":"Ukuran aksara","Full size image":"Gambar ukuran kebak","Green marker":"Panandha ijem","Green pen":"Pen ijem",Heading:"","Heading 1":"","Heading 2":"","Heading 3":"","Heading 4":"","Heading 5":"","Heading 6":"",Highlight:"Sorot","Horizontal line":"Garis horisontal",Huge:"Langkung ageng","Image resize list":"","Image toolbar":"","image widget":"","In line":"","Insert image":"Tambahaken gambar",Italic:"Miring",Justify:"Rata kiwa tengen","Left aligned image":"Gambar ing kiwa","List properties":"","Lower-latin":"","Lower–roman":"","Numbered List":"","Numbered list styles toolbar":"",Original:"Asli",Paragraph:"","Pink marker":"Penandha abrit jambon","Red pen":"Penandha abrit","Remove color":"Busek warni","Remove highlight":"Busek sorot","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"Mangsulaken default","Reversed order":"Dipunwangsul","Right aligned image":"Gambar ing tengen",Save:"Rimat","Show more items":"Tampilaken langkung kathah","Side image":"",Small:"Alit",Square:"Kotak","Start at":"Wiwit saking","Start index must be greater than 0.":"","Text alignment":"Perataan seratan","Text alignment toolbar":"","Text alternative":"","Text highlight toolbar":"",Tiny:"Langkung alit","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Underline:"Garis ngandhap","Upload failed":"","Upper-latin":"","Upper-roman":"","Wrap text":"","Yellow marker":"Panandha jene"}),a.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View file

@ -0,0 +1 @@
!function(n){const t=n.kk=n.kk||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Ортадан туралау","Align left":"Солға туралау","Align right":"Оңға туралау",Justify:"","Text alignment":"Мәтінді туралау","Text alignment toolbar":"Мәтінді туралау құралдар тақтасы"}),t.getPluralForm=function(n){return 1!=n}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View file

@ -0,0 +1 @@
!function(e){const i=e.km=e.km||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"","Align center":"តម្រឹម​កណ្ដាល","Align left":"តម្រឹម​ឆ្វេង","Align right":"តម្រឹម​ស្ដាំ",Aquamarine:"",Black:"","Block quote":"ប្លុក​ពាក្យ​សម្រង់",Blue:"",Bold:"ដិត","Break text":"","Bulleted List":"បញ្ជី​ជា​ចំណុច","Bulleted list styles toolbar":"",Cancel:"បោះបង់","Centered image":"","Change image text alternative":"","Choose heading":"ជ្រើសរើស​ក្បាលអត្ថបទ",Circle:"",Decimal:"","Decimal with leading zero":"","Dim grey":"",Disc:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Full size image":"រូបភាព​ពេញ​ទំហំ",Green:"",Grey:"",Heading:"ក្បាលអត្ថបទ","Heading 1":"ក្បាលអត្ថបទ 1","Heading 2":"ក្បាលអត្ថបទ 2","Heading 3":"ក្បាលអត្ថបទ 3","Heading 4":"","Heading 5":"","Heading 6":"","Image resize list":"","Image toolbar":"","image widget":"វិដជិត​រូបភាព","In line":"","Insert image":"បញ្ចូល​រូបភាព",Italic:"ទ្រេត",Justify:"តម្រឹម​សងខាង","Left aligned image":"","Light blue":"","Light green":"","Light grey":"",Link:"តំណ","Link image":"","Link URL":"URL តំណ","List properties":"","Lower-latin":"","Lower–roman":"",Next:"","Numbered List":"បញ្ជី​ជា​លេខ","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Paragraph:"កថាខណ្ឌ",Previous:"",Purple:"",Red:"",Redo:"ធ្វើ​វិញ","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"កម្មវិធី​កែសម្រួល​អត្ថបទ​សម្បូរបែប","Right aligned image":"",Save:"រក្សាទុ","Show more items":"","Side image":"រូបភាព​នៅ​ខាង",Square:"","Start at":"","Start index must be greater than 0.":"","Text alignment":"ការ​តម្រឹម​អក្សរ","Text alignment toolbar":"របារ​ឧបករណ៍​តម្រឹម​អក្សរ","Text alternative":"","This link has no URL":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"គូស​បន្ទាត់​ក្រោម",Undo:"លែង​ធ្វើ​វិញ",Unlink:"ផ្ដាច់​តំណ","Upload failed":"អាប់ឡូត​មិនបាន","Upper-latin":"","Upper-roman":"",White:"","Wrap text":"",Yellow:""}),i.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View file

@ -0,0 +1 @@
!function(e){const i=e.kn=e.kn||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"","Block quote":"‍‍‍‍ಗುರುತಿಸಲಾದ ‍‍ಉಲ್ಲೇಖ",Blue:"",Bold:"‍‍ದಪ್ಪ","Break text":"","Bulleted List":"‍‍ಬುಲೆಟ್ ಪಟ್ಟಿ","Bulleted list styles toolbar":"",Cancel:"ರದ್ದುಮಾಡು","Centered image":"","Change image text alternative":"‍ಚಿತ್ರದ ಬದಲಿ ಪಠ್ಯ ಬದಲಾಯಿಸು","Choose heading":"ಶೀರ್ಷಿಕೆ ಆಯ್ಕೆಮಾಡು",Circle:"",Decimal:"","Decimal with leading zero":"","Dim grey":"",Disc:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Full size image":"‍ಪೂರ್ಣ ‍‍ಅಳತೆಯ ಚಿತ್ರ",Green:"",Grey:"",Heading:"ಶೀರ್ಷಿಕೆ","Heading 1":"ಶೀರ್ಷಿಕೆ 1","Heading 2":"ಶೀರ್ಷಿಕೆ 2","Heading 3":"ಶೀರ್ಷಿಕೆ 3","Heading 4":"","Heading 5":"","Heading 6":"","Image resize list":"","Image toolbar":"","image widget":"‍ಚಿತ್ರ ವಿಜೆಟ್","In line":"","Insert image":"",Italic:"‍ಇಟಾಲಿಕ್","Left aligned image":"","Light blue":"","Light green":"","Light grey":"",Link:"‍ಕೊಂಡಿ","Link image":"","Link URL":"‍ಕೊಂಡಿ ಸಂಪರ್ಕಿಸು","List properties":"","Lower-latin":"","Lower–roman":"",Next:"","Numbered List":"‍ಸಂಖ್ಯೆಯ ಪಟ್ಟಿ‍","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Paragraph:"ಪ್ಯಾರಾಗ್ರಾಫ್",Previous:"",Purple:"",Red:"",Redo:"‍ಮತ್ತೆ ಮಾಡು","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"‍ಸಮೃದ್ಧ ಪಠ್ಯ ಸಂಪಾದಕ‍‍","Right aligned image":"",Save:"ಉಳಿಸು","Show more items":"","Side image":"‍ಪಕ್ಕದ ಚಿತ್ರ",Square:"","Start at":"","Start index must be greater than 0.":"","Text alternative":"‍ಪಠ್ಯದ ಬದಲಿ","This link has no URL":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"",Undo:"‍‍ರದ್ದು",Unlink:"‍ಕೊಂಡಿ ತೆಗೆ","Upload failed":"","Upper-latin":"","Upper-roman":"",White:"","Wrap text":"",Yellow:""}),i.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const t=e.nb=e.nb||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"","Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align center":"Midstill","Align left":"Venstrejuster","Align right":"Høyrejuster","Align table to the left":"","Align table to the right":"",Alignment:"",Aquamarine:"",Background:"",Big:"Stor",Black:"","Block quote":"Blokksitat",Blue:"","Blue marker":"Blå uthevingsfarge",Bold:"Fet",Border:"","Break text":"","Bulleted List":"Punktmerket liste","Bulleted list styles toolbar":"",Cancel:"Avbryt","Cell properties":"","Center table":"","Centered image":"Midtstilt bilde","Change image text alternative":"Endre tekstalternativ for bilde","Choose heading":"Velg overskrift",Circle:"",Color:"","Color picker":"",Column:"Kolonne",Dashed:"",Decimal:"","Decimal with leading zero":"",Default:"Standard","Delete column":"Slett kolonne","Delete row":"Slett rad","Dim grey":"",Dimensions:"",Disc:"","Document colors":"",Dotted:"",Double:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"Rediger lenke","Editor editing area: %0":"","Editor toolbar":"","Enter table caption":"","Font Color":"","Font Family":"Skrifttype","Font Size":"Skriftstørrelse","Full size image":"Bilde i full størrelse",Green:"","Green marker":"Grønn uthevingsfarge","Green pen":"Grønn penn",Grey:"",Groove:"","Header column":"Overskriftkolonne","Header row":"Overskriftrad",Heading:"Overskrift","Heading 1":"Overskrift 1","Heading 2":"Overskrift 2","Heading 3":"Overskrift 3","Heading 4":"","Heading 5":"","Heading 6":"",Height:"",Highlight:"Utheving","Horizontal text alignment toolbar":"",Huge:"Veldig stor","Image resize list":"","Image toolbar":"","image widget":"Bilde-widget","In line":"","Insert column left":"","Insert column right":"","Insert image":"Sett inn bilde","Insert row above":"Sett inn rad over","Insert row below":"Sett inn rad under","Insert table":"Sett inn tabell",Inset:"",Italic:"Kursiv",Justify:"Blokkjuster","Justify cell text":"","Left aligned image":"Venstrejustert bilde","Light blue":"","Light green":"","Light grey":"",Link:"Lenke","Link image":"","Link URL":"URL for lenke","List properties":"","Lower-latin":"","Lower–roman":"","Merge cell down":"Slå sammen celle ned","Merge cell left":"Slå sammen celle til venstre","Merge cell right":"Slå sammen celle til høyre","Merge cell up":"Slå sammen celle opp","Merge cells":"Slå sammen celler",Next:"",None:"","Numbered List":"Nummerert liste","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"Åpne lenke i ny fane",Orange:"",Original:"",Outset:"",Padding:"",Paragraph:"Avsnitt","Pink marker":"Rosa uthevingsfarge",Previous:"",Purple:"",Red:"","Red pen":"Rød penn",Redo:"Gjør om","Remove color":"","Remove highlight":"Fjern uthevingsfarge","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"Rikteksteditor",Ridge:"","Right aligned image":"Høyrejustert bilde",Row:"Rad",Save:"Lagre","Select column":"","Select row":"","Show more items":"","Side image":"Sidebilde",Small:"Liten",Solid:"","Split cell horizontally":"Del celle horisontalt","Split cell vertically":"Del celle vertikalt",Square:"","Start at":"","Start index must be greater than 0.":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"","Text alignment":"Tekstjustering","Text alignment toolbar":"","Text alternative":"Tekstalternativ for bilde","Text highlight toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","This link has no URL":"Denne lenken har ingen URL",Tiny:"Veldig liten","Toggle caption off":"","Toggle caption on":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"Understreking",Undo:"Angre",Unlink:"Fjern lenke","Upload failed":"Opplasting feilet","Upload in progress":"Opplasting pågår","Upper-latin":"","Upper-roman":"","Vertical text alignment toolbar":"",White:"",Width:"","Wrap text":"",Yellow:"","Yellow marker":"Gul uthevingsfarge"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(o){const n=o.oc=o.oc||{};n.dictionary=Object.assign(n.dictionary||{},{"%0 of %1":"",Bold:"Gras",Cancel:"Anullar",Italic:"Italica","Remove color":"","Restore default":"",Save:"Enregistrar","Show more items":"",Underline:""}),n.getPluralForm=function(o){return o>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(e){const t=e.si=e.si||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Bold:"තදකුරු","Break text":"","Bulleted List":"බුලටිත ලැයිස්තුව","Bulleted list styles toolbar":"",Cancel:"","Centered image":"","Change image text alternative":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Full size image":"","Image resize list":"","Image toolbar":"","image widget":"","In line":"","Insert image":"පින්තූරය ඇතුල් කරන්න",Italic:"ඇලකුරු","Left aligned image":"","List properties":"","Lower-latin":"","Lower–roman":"","Numbered List":"අංකිත ලැයිස්තුව","Numbered list styles toolbar":"",Original:"",Redo:"නැවත කරන්න","Remove color":"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Right aligned image":"",Save:"","Show more items":"","Side image":"",Square:"","Start at":"","Start index must be greater than 0.":"","Text alternative":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Underline:"",Undo:"අහෝසි කරන්න","Upload failed":"උඩුගත කිරීම අසාර්ථක විය","Upper-latin":"","Upper-roman":"","Wrap text":""}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(a){const e=a.sl=a.sl||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"","Align center":"Sredinska poravnava","Align left":"Poravnava levo","Align right":"Poravnava desno",Aquamarine:"Akvamarin",Big:"Veliko",Black:"Črna","Block quote":"Blokiraj citat",Blue:"Modra","Blue marker":"Modra oznaka",Bold:"Krepko",Cancel:"Prekliči","Choose heading":"Izberi naslov",Default:"Privzeto","Dim grey":"Temno siva","Document colors":"Barve dokumenta","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"","Font Color":"Barva pisave","Font Family":"Vrsta oz. tip pisave","Font Size":"Velikost pisave",Green:"Zelena","Green marker":"Zelena oznaka","Green pen":"Zeleno pisalo",Grey:"Siva",Heading:"Naslov","Heading 1":"Naslov 1","Heading 2":"Naslov 2","Heading 3":"Naslov 3","Heading 4":"Naslov 4","Heading 5":"Naslov 5","Heading 6":"Naslov 6",Highlight:"Označi","Horizontal line":"Vodoravna črta",Huge:"Ogromno",Italic:"Poševno",Justify:"Postavi na sredino","Light blue":"Svetlo modra","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"",Orange:"Oranžna",Paragraph:"Odstavek","Pink marker":"Rožnata oznaka",Previous:"",Purple:"Vijolična",Red:"Rdeča","Red pen":"Rdeče pisalo","Remove color":"Odstrani barvo","Remove highlight":"Odstrani oznako","Restore default":"","Rich Text Editor":"",Save:"Shrani","Show more items":"",Small:"Majhna","Text alignment":"Poravnava besedila","Text alignment toolbar":"Orodna vrstica besedila","Text highlight toolbar":"Orodna vrstica označevanja",Tiny:"Drobna",Turquoise:"Turkizna",Underline:"Podčrtaj",White:"Bela",Yellow:"Rumena","Yellow marker":"Rumena oznaka"}),e.getPluralForm=function(a){return a%100==1?0:a%100==2?1:a%100==3||a%100==4?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
!function(o){const t=o.tt=o.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Bold:"Калын",Cancel:"",Italic:"",Redo:"Кабатла","Remove color":"","Restore default":"",Save:"Сакла","Show more items":"",Underline:"",Undo:""}),t.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View file

@ -0,0 +1 @@
!function(e){const t=e.ug=e.ug||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"","Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align center":"ئوتتۇرىغا توغرىلاش","Align left":"سولغا توغرىلاش","Align right":"ئوڭغا توغرىلاش","Align table to the left":"","Align table to the right":"",Alignment:"",Aquamarine:"",Background:"",Big:"چوڭ",Black:"","Block quote":"نەقىل",Blue:"",Bold:"توم",Border:"","Break text":"","Bulleted List":"بەلگە تىزىملىك","Bulleted list styles toolbar":"",Cancel:"ئىناۋەتسىز","Cell properties":"","Center table":"","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"ماۋزۇ تاللاش",Circle:"",Color:"","Color picker":"",Column:"",Dashed:"",Decimal:"","Decimal with leading zero":"",Default:"سۈكۈتتىكى","Delete column":"","Delete row":"","Dim grey":"",Dimensions:"",Disc:"","Document colors":"",Dotted:"",Double:"",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor editing area: %0":"","Editor toolbar":"","Enter table caption":"","Font Color":"خەت رەڭگى","Font Family":"خەت نۇسخىسى","Font Size":"خەت چوڭلۇقى","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Green:"",Grey:"",Groove:"","Header column":"","Header row":"",Heading:"ماۋزۇ","Heading 1":"ماۋزۇ 1","Heading 2":"ماۋزۇ 2","Heading 3":"ماۋزۇ 3","Heading 4":"ماۋزۇ 4","Heading 5":"ماۋزۇ 5","Heading 6":"ماۋزۇ 6",Height:"","Horizontal text alignment toolbar":"",Huge:"زور","Image resize list":"","Image toolbar":"","image widget":"رەسىمچىك","In line":"","Insert column left":"","Insert column right":"","Insert image":"رەسىم قىستۇرۇش","Insert row above":"","Insert row below":"","Insert table":"جەدۋەل قىستۇر",Inset:"",Italic:"يانتۇ",Justify:"تەكشىلەش","Justify cell text":"","Left aligned image":"سولغا توغۇرلانغان رەسىم","Light blue":"","Light green":"","Light grey":"",Link:"ئۇلانما","Link image":"","Link URL":"ئۇلاش ئادىرسى","List properties":"","Lower-latin":"","Lower–roman":"","Merge cell down":"","Merge cell left":"","Merge cell right":"","Merge cell up":"","Merge cells":"",Next:"",None:"","Numbered List":"نومۇرلۇق تىزىملىك","Numbered list styles toolbar":"","Open in a new tab":"","Open link in new tab":"",Orange:"",Original:"",Outset:"",Padding:"",Paragraph:"ئابزاس",Previous:"",Purple:"",Red:"",Redo:"تەكرارلاش","Remove color":"رەڭنى چىقىرىۋېتىش","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Restore default":"","Reversed order":"","Rich Text Editor":"تېكىست تەھرىرلىگۈچ",Ridge:"","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Row:"",Save:"ساقلاش","Select column":"","Select row":"","Show more items":"","Side image":"يان رەسىم",Small:"كىچىك",Solid:"","Split cell horizontally":"","Split cell vertically":"",Square:"","Start at":"","Start index must be greater than 0.":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"","Text alignment":"تېكىست توغرىلاش","Text alignment toolbar":"تېكىست توغرىلاش قورالبالدىقى","Text alternative":"تېكىست ئاملاشتۇرۇش",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","This link has no URL":"",Tiny:"ئەڭ كىچىك","Toggle caption off":"","Toggle caption on":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"",Turquoise:"",Underline:"ئاستى سىزىق",Undo:"يېنىۋېلىش",Unlink:"ئۇلانمىنى ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى","Upper-latin":"","Upper-roman":"","Vertical text alignment toolbar":"",White:"",Width:"","Wrap text":"",Yellow:""}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
Subproject commit 43c5b50ada05f5e09e7588dbb578b06229709f54

View file

@ -0,0 +1,50 @@
{
"name": "ckeditor5-calliope-build",
"author": "Jeremy Munsch<jeremy.munsch@ldc.fr>",
"description": "Build spécial calliope avec adaptateur Laravel File Manager",
"version": "0.0.1",
"license": "SEE LICENSE IN LICENSE.md",
"private": true,
"main": "./build/ckeditor.js",
"devDependencies": {
"@ckeditor/ckeditor5-alignment": "^35.0.1",
"@ckeditor/ckeditor5-autoformat": "^35.0.1",
"@ckeditor/ckeditor5-basic-styles": "^35.0.1",
"@ckeditor/ckeditor5-block-quote": "^35.0.1",
"@ckeditor/ckeditor5-dev-utils": "^30.4.0",
"@ckeditor/ckeditor5-dev-webpack-plugin": "^30.1.5",
"@ckeditor/ckeditor5-editor-classic": "^35.0.1",
"@ckeditor/ckeditor5-essentials": "^35.0.1",
"@ckeditor/ckeditor5-font": "^35.0.1",
"@ckeditor/ckeditor5-heading": "^35.0.1",
"@ckeditor/ckeditor5-highlight": "^35.0.1",
"@ckeditor/ckeditor5-horizontal-line": "^35.0.1",
"@ckeditor/ckeditor5-image": "^35.0.1",
"@ckeditor/ckeditor5-indent": "^35.0.1",
"@ckeditor/ckeditor5-link": "^35.0.1",
"@ckeditor/ckeditor5-list": "^35.0.1",
"@ckeditor/ckeditor5-media-embed": "^35.0.1",
"@ckeditor/ckeditor5-paragraph": "^35.0.1",
"@ckeditor/ckeditor5-paste-from-office": "^35.0.1",
"@ckeditor/ckeditor5-remove-format": "^35.0.1",
"@ckeditor/ckeditor5-source-editing": "^35.0.1",
"@ckeditor/ckeditor5-special-characters": "^35.0.1",
"@ckeditor/ckeditor5-table": "^35.0.1",
"@ckeditor/ckeditor5-theme-lark": "^35.0.1",
"@ckeditor/ckeditor5-typing": "^35.0.1",
"@ckeditor/ckeditor5-upload": "^35.0.1",
"@ckeditor/ckeditor5-word-count": "^35.0.1",
"css-loader": "^5.2.7",
"mini-css-extract-plugin": "^2.6.0",
"postcss": "^8.4.7",
"postcss-loader": "^6.2.1",
"raw-loader": "^4.0.2",
"style-loader": "^3.3.1",
"terser-webpack-plugin": "^4.2.3",
"webpack": "^5.72.1",
"webpack-cli": "^4.9.2"
},
"scripts": {
"build": "webpack --mode production"
}
}

View file

@ -0,0 +1,171 @@
<!DOCTYPE html><!--
Copyright (c) 2014-2021, CKSource - Frederico Knabben. All rights reserved.
This file is licensed under the terms of the MIT License (see LICENSE.md).
-->
<html lang="en" dir="ltr">
<head>
<title>CKEditor 5 ClassicEditor build</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" href="https://c.cksource.com/a/1/logos/ckeditor5.png">
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body data-editor="ClassicEditor" data-collaboration="false" data-revision-history="false">
<header>
<div class="centered">
<h1><a href="https://ckeditor.com/ckeditor-5/" target="_blank" rel="noopener noreferrer"><img src="https://c.cksource.com/a/1/logos/ckeditor5.svg" alt="CKEditor 5 logo">CKEditor 5</a></h1>
<nav>
<ul>
<li><a href="https://ckeditor.com/docs/ckeditor5/" target="_blank" rel="noopener noreferrer">Documentation</a></li>
<li><a href="https://ckeditor.com/" target="_blank" rel="noopener noreferrer">Website</a></li>
</ul>
</nav>
</div>
</header>
<main>
<div class="message">
<div class="centered">
<h2>CKEditor 5 online builder demo - ClassicEditor build</h2>
</div>
</div>
<div class="centered">
<div class="row row-editor">
<div class="editor-container">
<div class="editor">
<h2>Bilingual Personality Disorder</h2>
<figure class="image image-style-side"><img src="https://c.cksource.com/a/1/img/docs/sample-image-bilingual-personality-disorder.jpg">
<figcaption>One language, one person.</figcaption>
</figure>
<p>
This may be the first time you hear about this made-up disorder but
it actually isn’t so far from the truth. Even the studies that were conducted almost half a century show that
<strong>the language you speak has more effects on you than you realise</strong>.
</p>
<p>
One of the very first experiments conducted on this topic dates back to 1964.
<a href="https://www.researchgate.net/publication/9440038_Language_and_TAT_content_in_bilinguals">In the experiment</a>
designed by linguist Ervin-Tripp who is an authority expert in psycholinguistic and sociolinguistic studies,
adults who are bilingual in English in French were showed series of pictures and were asked to create 3-minute stories.
In the end participants emphasized drastically different dynamics for stories in English and French.
</p>
<p>
Another ground-breaking experiment which included bilingual Japanese women married to American men in San Francisco were
asked to complete sentences. The goal of the experiment was to investigate whether or not human feelings and thoughts
are expressed differently in <strong>different language mindsets</strong>.
Here is a sample from the the experiment:
</p>
<table>
<thead>
<tr>
<th></th>
<th>English</th>
<th>Japanese</th>
</tr>
</thead>
<tbody>
<tr>
<td>Real friends should</td>
<td>Be very frank</td>
<td>Help each other</td>
</tr>
<tr>
<td>I will probably become</td>
<td>A teacher</td>
<td>A housewife</td>
</tr>
<tr>
<td>When there is a conflict with family</td>
<td>I do what I want</td>
<td>It's a time of great unhappiness</td>
</tr>
</tbody>
</table>
<p>
More recent <a href="https://books.google.pl/books?id=1LMhWGHGkRUC">studies</a> show, the language a person speaks affects
their cognition, behaviour, emotions and hence <strong>their personality</strong>.
This shouldn’t come as a surprise
<a href="https://en.wikipedia.org/wiki/Lateralization_of_brain_function">since we already know</a> that different regions
of the brain become more active depending on the person’s activity at hand. Since structure, information and especially
<strong>the culture</strong> of languages varies substantially and the language a person speaks is an essential element of daily life.
</p>
</div>
</div>
</div></div>
</div>
</main>
<footer>
<p><a href="https://ckeditor.com/ckeditor-5/" target="_blank" rel="noopener">CKEditor 5</a>
– Rich text editor of tomorrow, available today
</p>
<p>Copyright © 2003-2021,
<a href="https://cksource.com/" target="_blank" rel="noopener">CKSource</a>
– Frederico Knabben. All rights reserved.
</p>
</footer>
<script src="../build/ckeditor.js"></script>
<script>ClassicEditor
.create( document.querySelector( '.editor' ), {
toolbar: {
items: [
'heading',
'|',
'bold',
'italic',
'underline',
'link',
'bulletedList',
'numberedList',
'|',
'outdent',
'indent',
'alignment',
'|',
'imageUpload',
'blockQuote',
'insertTable',
'mediaEmbed',
'|',
'fontColor',
'fontFamily',
'fontSize',
'horizontalLine',
'|',
'removeFormat',
'|',
'undo',
'redo'
]
},
language: 'fr',
image: {
toolbar: [
'imageTextAlternative',
'imageStyle:inline',
'imageStyle:block',
'imageStyle:side',
'linkImage'
]
},
licenseKey: '',
} )
.then( editor => {
window.editor = editor;
} )
.catch( error => {
console.error( 'Oops, something went wrong!' );
console.error( 'Please, report the following error on https://github.com/ckeditor/ckeditor5/issues with the build id and the error stack trace:' );
console.warn( 'Build id: unyb7c61pdjq-xt0bz4ltrghq' );
console.error( error );
} );
</script>
</body>
</html>

View file

@ -0,0 +1,500 @@
/**
* @license Copyright (c) 2014-2021, CKSource - Frederico Knabben. All rights reserved.
* This file is licensed under the terms of the MIT License (see LICENSE.md).
*/
:root {
--ck-sample-base-spacing: 2em;
--ck-sample-color-white: #fff;
--ck-sample-color-green: #279863;
--ck-sample-color-blue: #1a9aef;
--ck-sample-container-width: 1285px;
--ck-sample-sidebar-width: 350px;
--ck-sample-editor-min-height: 400px;
--ck-sample-editor-z-index: 10;
}
/* --------- EDITOR STYLES ---------------------------------------------------------------------------------------- */
.editor__editable,
/* Classic build. */
main .ck-editor[role='application'] .ck.ck-content,
/* Decoupled document build. */
.ck.editor__editable[role='textbox'],
.ck.ck-editor__editable[role='textbox'],
/* Inline & Balloon build. */
.ck.editor[role='textbox'] {
width: 100%;
background: #fff;
font-size: 1em;
line-height: 1.6em;
min-height: var(--ck-sample-editor-min-height);
padding: 1.5em 2em;
}
main .ck-editor[role='application'] {
overflow: auto;
}
.ck.ck-editor__editable {
background: #fff;
border: 1px solid hsl(0, 0%, 70%);
width: 100%;
}
/* Because of sidebar `position: relative`, Edge is overriding the outline of a focused editor. */
.ck.ck-editor__editable {
position: relative;
z-index: var(--ck-sample-editor-z-index);
}
.editor-container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
position: relative;
width: 100%;
justify-content: center;
}
/* --------- DECOUPLED (DOCUMENT) BUILD. ---------------------------------------------*/
body[data-editor='DecoupledDocumentEditor'] .document-editor__toolbar {
width: 100%;
}
body[data-editor='DecoupledDocumentEditor'] .collaboration-demo__editable,
body[data-editor='DecoupledDocumentEditor'] .row-editor .editor {
/* A pixel is added for each of the border. */
width: calc(21cm + 2px);
min-height: calc(29.7cm + 2px);
/* To avoid having extra scrolls inside the editor container. */
height: fit-content;
padding: 2cm 1.2cm;
margin: 2.5rem;
border: 1px hsl( 0, 0%, 82.7% ) solid;
background-color: var(--ck-sample-color-white);
box-shadow: 0 0 5px hsla( 0, 0%, 0%, .1 );
box-sizing: border-box;
}
body[data-editor='DecoupledDocumentEditor'] .row-editor {
display: flex;
position: relative;
justify-content: center;
overflow-y: auto;
background-color: #f2f2f2;
border: 1px solid hsl(0, 0%, 77%);
/* Limit the max-height of the editor to avoid scrolling from bottom to top to see the toolbar. */
max-height: 700px;
}
body[data-editor='DecoupledDocumentEditor'] .sidebar {
background: transparent;
border: 0;
box-shadow: none;
}
/* --------- COMMENTS & TRACK CHANGES FEATURE ---------------------------------------------------------------------- */
.sidebar {
padding: 0 15px;
position: relative;
min-width: var(--ck-sample-sidebar-width);
max-width: var(--ck-sample-sidebar-width);
font-size: 20px;
border: 1px solid hsl(0, 0%, 77%);
background: hsl(0, 0%, 98%);
border-left: 0;
overflow: hidden;
min-height: 100%;
flex-grow: 1;
}
/* Do not inherit styles related to the editable editor content. See line 25.*/
.sidebar .ck-content[role='textbox'],
.ck.ck-annotation-wrapper .ck-content[role='textbox'] {
min-height: unset;
width: unset;
padding: 0;
background: transparent;
}
.sidebar.narrow {
min-width: 60px;
flex-grow: 0;
}
.sidebar.hidden {
display: none !important;
}
#sidebar-display-toggle {
position: absolute;
z-index: 1;
width: 30px;
height: 30px;
text-align: center;
left: 15px;
top: 30px;
border: 0;
padding: 0;
color: hsl( 0, 0%, 50% );
transition: 250ms ease color;
background-color: transparent;
}
#sidebar-display-toggle:hover {
color: hsl( 0, 0%, 30% );
cursor: pointer;
}
#sidebar-display-toggle:focus,
#sidebar-display-toggle:active {
outline: none;
border: 1px solid #a9d29d;
}
#sidebar-display-toggle svg {
fill: currentColor;
}
/* --------- COLLABORATION FEATURES (USERS) ------------------------------------------------------------------------ */
.row-presence {
width: 100%;
border: 1px solid hsl(0, 0%, 77%);
border-bottom: 0;
background: hsl(0, 0%, 98%);
padding: var(--ck-spacing-small);
/* Make `border-bottom` as `box-shadow` to not overlap with the editor border. */
box-shadow: 0 1px 0 0 hsl(0, 0%, 77%);
/* Make `z-index` bigger than `.editor` to properly display tooltips. */
z-index: 20;
}
.ck.ck-presence-list {
flex: 1;
padding: 1.25rem .75rem;
}
.presence .ck.ck-presence-list__counter {
order: 2;
margin-left: var(--ck-spacing-large)
}
/* --------- REAL TIME COLLABORATION FEATURES (SHARE TOPBAR CONTAINER) --------------------------------------------- */
.collaboration-demo__row {
display: flex;
position: relative;
justify-content: center;
overflow-y: auto;
background-color: #f2f2f2;
border: 1px solid hsl(0, 0%, 77%);
}
body[data-editor='InlineEditor'] .collaboration-demo__row {
border: 0;
}
.collaboration-demo__container {
max-width: var(--ck-sample-container-width);
margin: 0 auto;
padding: 1.25rem;
}
.presence, .collaboration-demo__row {
transition: .2s opacity;
}
.collaboration-demo__topbar {
background: #fff;
border: 1px solid var(--ck-color-toolbar-border);
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 0;
border-radius: 4px 4px 0 0;
}
.collaboration-demo__topbar .btn {
margin-right: 1em;
outline-offset: 2px;
outline-width: 2px;
background-color: var( --ck-sample-color-blue );
}
.collaboration-demo__topbar .btn:focus,
.collaboration-demo__topbar .btn:hover {
border-color: var( --ck-sample-color-blue );
}
.collaboration-demo__share {
display: flex;
align-items: center;
padding: 1.25rem .75rem
}
.collaboration-demo__share-description p {
margin: 0;
font-weight: bold;
font-size: 0.9em;
}
.collaboration-demo__share input {
height: auto;
font-size: 0.9em;
min-width: 220px;
margin: 0 10px;
border-radius: 4px;
border: 1px solid var(--ck-color-toolbar-border)
}
.collaboration-demo__share button,
.collaboration-demo__share input {
height: 40px;
padding: 5px 10px;
}
.collaboration-demo__share button {
position: relative;
}
.collaboration-demo__share button:focus {
outline: none;
}
.collaboration-demo__share button[data-tooltip]::before,
.collaboration-demo__share button[data-tooltip]::after {
position: absolute;
visibility: hidden;
opacity: 0;
pointer-events: none;
transition: all .15s cubic-bezier(.5,1,.25,1);
z-index: 1;
}
.collaboration-demo__share button[data-tooltip]::before {
content: attr(data-tooltip);
padding: 5px 15px;
border-radius: 3px;
background: #111;
color: #fff;
text-align: center;
font-size: 11px;
top: 100%;
left: 50%;
margin-top: 5px;
transform: translateX(-50%);
}
.collaboration-demo__share button[data-tooltip]::after {
content: '';
border: 5px solid transparent;
width: 0;
font-size: 0;
line-height: 0;
top: 100%;
left: 50%;
transform: translateX(-50%);
border-bottom: 5px solid #111;
border-top: none;
}
.collaboration-demo__share button[data-tooltip]:hover:before,
.collaboration-demo__share button[data-tooltip]:hover:after {
visibility: visible;
opacity: 1;
}
.collaboration-demo--ready {
overflow: visible;
height: auto;
}
.collaboration-demo--ready .presence,
.collaboration-demo--ready .collaboration-demo__row {
opacity: 1;
}
/* --------- PAGINATION FEATURE ------------------------------------------------------------------------------------ */
/* Pagination view line must be stacked at least at the same level as the editor,
otherwise it will be hidden underneath. */
.ck.ck-pagination-view-line {
z-index: var(--ck-sample-editor-z-index);
}
/* --------- REVISION HISTORY FEATURE ------------------------------------------------------------------------------ */
.revision-viewer-container {
display: none;
}
.revision-viewer-sidebar {
position: relative;
min-width: 310px;
overflow: hidden;
background: var(--ck-color-toolbar-background);
border: 1px solid var(--ck-color-toolbar-border);
margin-left: -1px;
}
/* A case when Pagination and Revision History features are enabled in the editor. */
/* Move the square with page number from the Pagination plugin to the left side, so that it does not cover the RH sidebar. */
body[data-revision-history='true'] .ck.ck-pagination-view-line::after {
transform: translateX(-100%) !important;
left: -1px !important;
right: unset !important;
}
/* --------- SAMPLE GENERIC STYLES (not related to CKEditor) ------------------------------------------------------- */
body, html {
padding: 0;
margin: 0;
font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.5;
}
body {
height: 100%;
color: #2D3A4A;
}
body * {
box-sizing: border-box;
}
a {
color: #38A5EE;
}
header .centered {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: center;
min-height: 8em;
}
header h1 a {
font-size: 20px;
display: flex;
align-items: center;
color: #2D3A4A;
text-decoration: none;
}
header h1 img {
display: block;
height: 64px;
}
header nav ul {
margin: 0;
padding: 0;
list-style-type: none;
}
header nav ul li {
display: inline-block;
}
header nav ul li + li {
margin-left: 1em;
}
header nav ul li a {
font-weight: bold;
text-decoration: none;
color: #2D3A4A;
}
header nav ul li a:hover {
text-decoration: underline;
}
main .message {
padding: 0 0 var(--ck-sample-base-spacing);
background: var(--ck-sample-color-green);
color: var(--ck-sample-color-white);
}
main .message::after {
content: "";
z-index: -1;
display: block;
height: 10em;
width: 100%;
background: var(--ck-sample-color-green);
position: absolute;
left: 0;
}
main .message h2 {
position: relative;
padding-top: 1em;
font-size: 2em;
}
.centered {
/* Hide overlapping comments. */
overflow: hidden;
max-width: var(--ck-sample-container-width);
margin: 0 auto;
padding: 0 var(--ck-sample-base-spacing);
}
.row {
display: flex;
position: relative;
}
.btn {
cursor: pointer;
padding: 8px 16px;
font-size: 1rem;
user-select: none;
border-radius: 4px;
transition: color .2s ease-in-out,background-color .2s ease-in-out,border-color .2s ease-in-out,opacity .2s ease-in-out;
background-color: var(--ck-sample-color-button-blue);
border-color: var(--ck-sample-color-button-blue);
color: var(--ck-sample-color-white);
display: inline-block;
}
.btn--tiny {
padding: 6px 12px;
font-size: .8rem;
}
footer {
margin: calc(2*var(--ck-sample-base-spacing)) var(--ck-sample-base-spacing);
font-size: .8em;
text-align: center;
color: rgba(0,0,0,.4);
}
/* --------- RWD --------------------------------------------------------------------------------------------------- */
@media screen and ( max-width: 800px ) {
:root {
--ck-sample-base-spacing: 1em;
}
header h1 {
width: 100%;
}
header h1 img {
height: 40px;
}
header nav ul {
text-align: right;
}
main .message h2 {
font-size: 1.5em;
}
}

View file

@ -0,0 +1,152 @@
/**
* @license Copyright (c) 2014-2021, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor.js';
import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment.js';
import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat.js';
import BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote.js';
import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold.js';
import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials.js';
import FontColor from '@ckeditor/ckeditor5-font/src/fontcolor.js';
import FontFamily from '@ckeditor/ckeditor5-font/src/fontfamily.js';
import FontSize from '@ckeditor/ckeditor5-font/src/fontsize.js';
import Heading from '@ckeditor/ckeditor5-heading/src/heading.js';
import HorizontalLine from '@ckeditor/ckeditor5-horizontal-line/src/horizontalline.js';
import Image from '@ckeditor/ckeditor5-image/src/image.js';
import ImageResize from '@ckeditor/ckeditor5-image/src/imageresize.js';
import ImageStyle from '@ckeditor/ckeditor5-image/src/imagestyle.js';
import ImageToolbar from '@ckeditor/ckeditor5-image/src/imagetoolbar.js';
import ImageUpload from '@ckeditor/ckeditor5-image/src/imageupload.js';
import Indent from '@ckeditor/ckeditor5-indent/src/indent.js';
import IndentBlock from '@ckeditor/ckeditor5-indent/src/indentblock.js';
import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic.js';
import Link from '@ckeditor/ckeditor5-link/src/link.js';
import LinkImage from '@ckeditor/ckeditor5-link/src/linkimage.js';
import List from '@ckeditor/ckeditor5-list/src/list.js';
import ListProperties from '@ckeditor/ckeditor5-list/src/listproperties';
import MediaEmbed from '@ckeditor/ckeditor5-media-embed/src/mediaembed.js';
import MediaEmbedEditing from '@ckeditor/ckeditor5-media-embed/src/mediaembedediting';
import MediaEmbedUI from '@ckeditor/ckeditor5-media-embed/src/mediaembedui';
import Widget from '@ckeditor/ckeditor5-widget/src/widget';
import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph.js';
import PasteFromOffice from '@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice.js';
import RemoveFormat from '@ckeditor/ckeditor5-remove-format/src/removeformat.js';
import SimpleUploadAdapter from '@ckeditor/ckeditor5-upload/src/adapters/simpleuploadadapter.js';
import Table from '@ckeditor/ckeditor5-table/src/table.js';
import TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar';
import TableProperties from '@ckeditor/ckeditor5-table/src/tableproperties';
import TableCellProperties from '@ckeditor/ckeditor5-table/src/tablecellproperties';
import TableCaption from '@ckeditor/ckeditor5-table/src/tablecaption';
import TextTransformation from '@ckeditor/ckeditor5-typing/src/texttransformation.js';
import Underline from '@ckeditor/ckeditor5-basic-styles/src/underline.js';
import Undo from '@ckeditor/ckeditor5-undo/src/undo.js';
import WordCount from '@ckeditor/ckeditor5-word-count/src/wordcount.js';
import LaravelFileManager from './../../../back/LaravelFileManager.js';
import SourceEditing from '@ckeditor/ckeditor5-source-editing/src/sourceediting.js';
import SpecialCharacters from '@ckeditor/ckeditor5-special-characters/src/specialcharacters';
import FullScreen from '../github/ckeditor5-fullscreen/FullScreen';
import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';
/**
* Legacy emojies
*
:-) 😊
:-P 😛
8-) 😎
;-) 😉
:-D 😄
:twisted: 😈
:mrgreen: 😁
:lol: 😆
:roll: 🙄
:-? 😕
:cry: 😢
:-o 😮
:evil: 😡
:-| 😐
:oops: 😳
:-x 😠
8-O 😲
:-( 😧
:arrow: ➡️
:idea: 💡
*/
let SpecialCharactersEmoji = function (editor) {
editor.plugins.get("SpecialCharacters").addItems("Emoji", [
{ title: ":-)", character: "😊" },
{ title: ":-P", character: "😛" },
{ title: "8-)", character: "😎" },
{ title: ";-)", character: "😉" },
{ title: ":-D", character: "😄" },
{ title: ":twisted:", character: "😈" },
{ title: ":mrgreen:", character: "😁" },
{ title: ":lol:", character: "😆" },
{ title: ":roll:", character: "🙄" },
{ title: ":-?", character: "😕" },
{ title: ":cry:", character: "😢" },
{ title: ":-o", character: "😮" },
{ title: ":evil:", character: "😡" },
{ title: ":-|", character: "😐" },
{ title: ":oops:", character: "😳" },
{ title: ":-x", character: "😠" },
{ title: "8-O", character: "😲" },
{ title: ":-(", character: "😧" },
{ title: ":arrow:", character: "➡" },
{ title: ":idea:", character: "💡" },
]);
};
class Editor extends ClassicEditor { }
// Plugins to include in the build.
Editor.builtinPlugins = [
Alignment,
Autoformat,
BlockQuote,
Bold,
Essentials,
FontColor,
FontFamily,
FontSize,
Heading,
HorizontalLine,
Image,
ImageResize,
ImageStyle,
ImageToolbar,
ImageUpload,
Indent,
IndentBlock,
Italic,
Link,
LinkImage,
List,
ListProperties,
MediaEmbed,
MediaEmbedEditing,
MediaEmbedUI,
Widget,
Paragraph,
PasteFromOffice,
RemoveFormat,
SimpleUploadAdapter,
Table,
TableToolbar,
TableProperties,
TableCellProperties,
TableCaption,
TextTransformation,
Underline,
Undo,
WordCount,
LaravelFileManager,
SourceEditing,
SpecialCharacters,
SpecialCharactersEmoji,
FullScreen,
Highlight
];
export default Editor;

View file

@ -0,0 +1,95 @@
/**
* @license Copyright (c) 2014-2021, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
'use strict';
/* eslint-env node */
const path = require( 'path' );
const webpack = require( 'webpack' );
const { bundler, styles } = require( '@ckeditor/ckeditor5-dev-utils' );
const CKEditorWebpackPlugin = require( '@ckeditor/ckeditor5-dev-webpack-plugin' );
const TerserWebpackPlugin = require( 'terser-webpack-plugin' );
module.exports = {
devtool: 'source-map',
performance: { hints: false },
entry: path.resolve( __dirname, 'src', 'ckeditor.js' ),
output: {
// The name under which the editor will be exported.
library: 'ClassicEditor',
path: path.resolve( __dirname, 'build' ),
filename: 'ckeditor.js',
libraryTarget: 'umd',
libraryExport: 'default'
},
optimization: {
minimizer: [
new TerserWebpackPlugin({
terserOptions: {
output: {
// Preserve CKEditor 5 license comments.
comments: /^!/
}
},
extractComments: false
} )
]
},
plugins: [
new CKEditorWebpackPlugin( {
// UI language. Language codes follow the https://en.wikipedia.org/wiki/ISO_639-1 format.
// When changing the built-in language, remember to also change it in the editor's configuration (src/ckeditor.js).
language: 'fr',
additionalLanguages: 'all'
} ),
new webpack.BannerPlugin( {
banner: bundler.getLicenseBanner(),
raw: true
} )
],
module: {
rules: [
{
test: /\.svg$/,
use: [ 'raw-loader' ]
},
{
test: /\.css$/,
use: [
{
loader: 'style-loader',
options: {
injectType: 'singletonStyleTag',
attributes: {
'data-cke': true
}
}
},
{
loader: 'css-loader'
},
{
loader: 'postcss-loader',
options: {
postcssOptions: styles.getPostCssConfig( {
themeImporter: {
themePath: require.resolve( '@ckeditor/ckeditor5-theme-lark' )
},
minify: true
} )
}
},
]
}
]
}
};

View file

@ -8,7 +8,7 @@
</div>
<div class="form-group">
<label for="code_ean">Code EAN</label>
<input type="text" id="code_ean" name="code_ean" class="form-control" placeholder="code_ean" value="{{ old('code_ean', $product->code_ean ?? '') }}">
<input type="text" id="code_ean" name="code_ean" class="form-control" placeholder="code_ean" value="{{ old('code_ean', $product->code_ean ?? '') }}" required>
</div>
<div class="form-group">
<label for="picture">Image *<small class="text-muted">- JPEG/PNG, 2Mo max. Dimensions {{ Config::get('theme.product_image_maxwidth') }} px par {{ Config::get('theme.product_image_maxheight') }} px</small></label></br>

View file

@ -12,8 +12,6 @@
<!-- Scripts -->
{{-- TODO : Ajouter jQuery dans app.js --}}
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
{{-- TODO : Ajouter CKEditor dans app.js --}}
<script src="https://cdn.ckeditor.com/ckeditor5/23.0.0/classic/ckeditor.js"></script>
{{-- TODO : Voir l'inclusion de Font Awesome, pour le moment c'est fait avec mon compte FA --}}
<script src="https://kit.fontawesome.com/2327d60f96.js" crossorigin="anonymous"></script>