.',
17 | 'type' => 'string',
18 | 'default' => 'list'
19 | ]
20 | ],
21 | 'response' => [
22 | 'content-type' => 'application/json',
23 | 'charset' => 'utf-8',
24 | 'accept-origin' => '*'
25 | ],
26 | 'providers' => ['context']
27 | ]);
28 |
29 | /**
30 | * @var \equal\php\Context $context
31 | */
32 | list($context) = [ $providers['context'] ];
33 |
34 | $result = [];
35 |
36 | // retrieve existing view meant for package
37 | $file = QN_BASEDIR."/packages/{$params['package']}/views/menu.{$params['menu_id']}.json";
38 |
39 | // #memo - to prevent untimely log entries, this script always return a non-404 error
40 | if(file_exists($file) && ($view = json_decode(@file_get_contents($file), true)) !== null) {
41 | $result = $view;
42 | }
43 |
44 | $context->httpResponse()
45 | ->body($result)
46 | ->send();
47 |
--------------------------------------------------------------------------------
/packages/core/data/pipeline/test-divide.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU LGPL 3 license
6 | */
7 | list($params, $providers) = eQual::announce([
8 | 'description' => 'Returns the division of two values.',
9 | 'params' => [
10 | 'numerator' => [
11 | 'description' => 'Numerator',
12 | 'type' => 'integer',
13 | 'usage' => 'numeric/integer',
14 | 'required' => true
15 | ],
16 | 'denominator' => [
17 | 'description' => 'Denominator',
18 | 'type' => 'integer',
19 | 'usage' => 'numeric/integer',
20 | 'required' => true
21 | ]
22 | ],
23 | 'response' => [
24 | 'content-type' => 'application/json',
25 | 'charset' => 'UTF-8',
26 | 'accept-origin' => '*',
27 | 'schema' => [
28 | 'type' => 'integer',
29 | 'usage' => 'numeric/integer',
30 | 'qty' => 'one'
31 | ]
32 | ],
33 | 'access' => [
34 | 'visibility' => 'public',
35 | ],
36 | 'providers' => ['context']
37 | ]);
38 |
39 | list($context) = [$providers['context']];
40 |
41 | $result = 0;
42 |
43 | if ($params['denominator'] != 0) {
44 | $result = intdiv($params['numerator'], $params['denominator']);
45 | }
46 |
47 | $context->httpResponse()
48 | ->body($result)
49 | ->send();
50 |
--------------------------------------------------------------------------------
/packages/core/data/pipeline/test-sum-list.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU LGPL 3 license
6 | */
7 | list($params, $providers) = eQual::announce([
8 | 'description' => 'Returns the sum of a list of integer',
9 | 'params' => [
10 | 'list' => [
11 | 'description' => 'list of integer',
12 | 'type' => 'array',
13 | 'required' => true
14 | ]
15 | ],
16 | 'response' => [
17 | 'content-type' => 'application/json',
18 | 'charset' => 'UTF-8',
19 | 'accept-origin' => '*',
20 | 'schema' => [
21 | 'type' => 'integer',
22 | 'usage' => 'numeric/integer',
23 | 'qty' => 'one'
24 | ]
25 | ],
26 | 'access' => [
27 | 'visibility' => 'public',
28 | ],
29 | 'providers' => ['context']
30 | ]);
31 |
32 | list($context) = [$providers['context']];
33 |
34 | $result = 0;
35 |
36 | foreach ($params['list'] as $element) {
37 | $result += $element;
38 | }
39 |
40 | $context->httpResponse()
41 | ->body($result)
42 | ->send();
43 |
--------------------------------------------------------------------------------
/packages/core/data/pipeline/test-sum.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU LGPL 3 license
6 | */
7 | list($params, $providers) = eQual::announce([
8 | 'description' => 'Returns the sum of two values.',
9 | 'params' => [
10 | 'first_value' => [
11 | 'description' => 'First value',
12 | 'type' => 'integer',
13 | 'usage' => 'numeric/integer',
14 | 'required' => true
15 | ],
16 | 'second_value' => [
17 | 'description' => 'Second value',
18 | 'type' => 'integer',
19 | 'usage' => 'numeric/integer',
20 | 'required' => true
21 | ]
22 | ],
23 | 'response' => [
24 | 'content-type' => 'application/json',
25 | 'charset' => 'UTF-8',
26 | 'accept-origin' => '*',
27 | 'schema' => [
28 | 'type' => 'integer',
29 | 'usage' => 'numeric/integer',
30 | 'qty' => 'one'
31 | ]
32 | ],
33 | 'access' => [
34 | 'visibility' => 'public',
35 | ],
36 | 'providers' => ['context']
37 | ]);
38 |
39 | list($context) = [$providers['context']];
40 |
41 | $result = $params['first_value'] + $params['second_value'];
42 |
43 | $context->httpResponse()
44 | ->body($result)
45 | ->send();
46 |
--------------------------------------------------------------------------------
/packages/core/data/setting/timezones.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU LGPL 3 license
6 | */
7 |
8 | list($params, $providers) = announce([
9 | 'description' => 'Returns a list of timezones identifiers, filtered by keywords if given.',
10 | 'params' => [
11 | 'q' => [
12 | 'description' => 'Keyword for filtering matching timezones.',
13 | 'type' => 'string',
14 | 'default' => ''
15 | ]
16 | ],
17 | 'constants' => ['DEFAULT_LANG'],
18 | 'response' => [
19 | 'content-type' => 'application/json',
20 | 'charset' => 'utf-8',
21 | 'accept-origin' => '*'
22 | ],
23 | 'providers' => [ 'context' ]
24 | ]);
25 |
26 | /**
27 | * @var \equal\php\Context $context
28 | */
29 | list($context) = [ $providers['context'] ];
30 |
31 | $result = [];
32 |
33 | $list = DateTimeZone::listIdentifiers();
34 |
35 | if(strlen($params['q'])) {
36 | foreach($list as $tz) {
37 | if(stripos($tz, $params['q']) !== false) {
38 | $result[] = $tz;
39 | }
40 | }
41 | }
42 | else {
43 | $result = $list;
44 | }
45 |
46 | $context->httpResponse()
47 | ->body($result)
48 | ->send();
--------------------------------------------------------------------------------
/packages/core/data/utils/git-revision.php:
--------------------------------------------------------------------------------
1 | "Provide a unique identifier of the current git revision.\n".
5 | "This script assumes the current installation is versioned using git.",
6 | 'response' => [
7 | 'content-type' => 'application/json',
8 | 'charset' => 'utf-8'
9 | ],
10 | 'params' => [
11 | ],
12 | 'providers' => ['context']
13 | ]);
14 |
15 | list( $context,
16 | $head_path,
17 | $index_path
18 | ) = [
19 | $providers['context'],
20 | '../.git/HEAD',
21 | '../.git/index'
22 | ];
23 |
24 | if(!file_exists($head_path)) {
25 | throw new Exception('git HEAD not found', QN_ERROR_INVALID_CONFIG);
26 | }
27 |
28 | if(!file_exists($index_path)) {
29 | throw new Exception('git index not found', QN_ERROR_INVALID_CONFIG);
30 | }
31 |
32 | $files = explode(' ', file_get_contents($head_path));
33 |
34 | if(!$files || !count($files)) {
35 | throw new Exception('no files found in git index', QN_ERROR_INVALID_CONFIG);
36 | }
37 |
38 | $file = trim($files[1]);
39 |
40 | $file_path = "../.git/$file";
41 |
42 | if(!file_exists($file_path)) {
43 | throw new Exception('inconsistent git index', QN_ERROR_INVALID_CONFIG);
44 | }
45 |
46 |
47 | // read first bytes from current branch revision hash
48 | $hash = substr(file_get_contents($file_path), 0, 7);
49 | $time = filemtime($index_path);
50 | $date = date("Y.m.d", $time);
51 |
52 |
53 | $context->httpResponse()->body(['revision' => "$date.$hash"])->send();
--------------------------------------------------------------------------------
/packages/core/i18n/en/Model.json:
--------------------------------------------------------------------------------
1 | {
2 | "model": {
3 | "id": {
4 | "label": "Identifier",
5 | "description": "Unique identifier of the object.",
6 | "help": ""
7 | },
8 | "creator": {
9 | "label": "Creator",
10 | "description": "User who created the object.",
11 | "help": ""
12 | },
13 | "created": {
14 | "label": "Created",
15 | "description": "Date of the object creation.",
16 | "help": ""
17 | },
18 | "modifier": {
19 | "label": "Modifier",
20 | "description": "Last user to have modified the object.",
21 | "help": ""
22 | },
23 | "modified": {
24 | "label": "Modified",
25 | "description": "Date of last update.",
26 | "help": ""
27 | },
28 | "deleted": {
29 | "label": "Deleted",
30 | "description": "Flag for deleted objects.",
31 | "help": ""
32 | },
33 | "state": {
34 | "label": "State",
35 | "description": "Status of the object (draft, instance).",
36 | "help": ""
37 | }
38 | },
39 | "view": {
40 | },
41 | "error": {
42 | }
43 | }
--------------------------------------------------------------------------------
/packages/core/i18n/en/Permission.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Permission",
3 | "plural": "Permissions",
4 | "description": "Permissions.",
5 | "model": {
6 | "class_name":{"label":"Class", "description": "", "help": ""},
7 | "rights":{"label":"Rights", "description": "", "help":"Permissions are set by using a binary mask, bits meaning:\nbit 0 (2^0 = 1): create\nbit 1 (2^1 = 2): read\nbit 2 (2^2 = 4): write\nbit 3 (2^3 = 8): delete\nbit 4 (2^4 = 16): manage\n\nEx.: To grant read and write permissions, we need to set bits 1 and 2,\n so field value would be 6 (2^1+2^2)."},
8 | "group_id":{"label":"Group", "description": "Group to which the permission belongs.", "help": ""},
9 | "rights_txt":{"label":"Rights", "description": "Translation in text of the rights of the permission.", "help": ""}
10 | },
11 | "view": {
12 |
13 | }
14 | }
--------------------------------------------------------------------------------
/packages/core/i18n/en/User.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "User",
3 | "plural": "Users",
4 | "description": "Users can log in, join groups and be granted specific permissions.",
5 | "model": {
6 | "login":{
7 | "label":"Email",
8 | "description": "",
9 | "help":"The email address is used as login."
10 | },
11 | "password":{"label":"Password", "description": "", "help": ""},
12 | "firstname":{"label":"Given name", "description": "", "help": ""},
13 | "lastname":{"label":"Family name", "description": "", "help": ""}
14 | },
15 | "view": {
16 | "identification":{"label":"Identification"},
17 | "ok":{"label":"Connect"},
18 | "subscribe":{"label":"Create an account"},
19 | "invalid_login":{"label":"Incorrect login format: not a valid e-mail address"},
20 | "invalid_password":{"label":"Incorrect password format: not an md5 value"}
21 | }
22 | }
--------------------------------------------------------------------------------
/packages/core/i18n/en/mail_test.html:
--------------------------------------------------------------------------------
1 |
2 | Test email was successfully sent from {{ url }} !
3 |
--------------------------------------------------------------------------------
/packages/core/i18n/en/mail_user_confirm.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello ,
4 |
5 | Welcome to our platform !
6 | Your subscription has been successfully processed and you can now use the App.
7 | However, in order to complete you profile, please validate your email address by clicking on the link below.
8 |
9 |
10 |
11 |
12 | This is an automatic message sent from following a registration that provided your email address.
13 | If you are not the originator of this request, simply ignore this message. If there is no response within 24 hours, your email address will be automatically removed from our database.
14 |
15 |
--------------------------------------------------------------------------------
/packages/core/i18n/en/mail_user_pass_recover.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello ,
4 |
5 |
6 | This is an automated message sent as a response to your request to reset your password.
7 |
8 | You can upadate your password by clicking on the link below (the link will remain valid for 15 minutes).
9 |
10 |
11 |
12 |
13 |
14 | This is an automated message sent from .
15 |
16 | Si vous n'êtes pas à l'origine de cette requête, ignorez simplement ce message. Aucun changement ne sera fait à votre compte.
17 | En cas de messages non sollicités répétés, merci de le signaler à
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/core/i18n/en/setting/SettingChoice.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Choice of parameter",
3 | "plural": "Choice of parameters",
4 | "description": "Available choices for a parameter.",
5 | "model": {
6 | "name": {
7 | "label": "Name",
8 | "description": "Parameter name.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Parameter",
13 | "description": "Parameter to which the choice belongs.",
14 | "help": ""
15 | },
16 | "value": {
17 | "label": "Value",
18 | "description": "Choice value.",
19 | "help": ""
20 | }
21 | },
22 | "view": {
23 | "form.default": {
24 | "name": "Parameter choice",
25 | "description": "Displays an option of the parameter."
26 | },
27 | "list.default": {
28 | "name": "List of the parameter options",
29 | "description": "Displays the options of the parameters."
30 | }
31 | },
32 | "error": {
33 | }
34 | }
--------------------------------------------------------------------------------
/packages/core/i18n/en/setting/SettingValue.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Parameter value",
3 | "plural": "Parameters values",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Name",
8 | "description": "Setting identifier.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Setting",
13 | "description": "Setting value.",
14 | "help": ""
15 | },
16 | "user_id": {
17 | "label": "User",
18 | "description": "User to which the parameter belongs.",
19 | "help": ""
20 | },
21 | "value": {
22 | "label": "Value",
23 | "description": "Parameter Value.",
24 | "help": ""
25 | }
26 | },
27 | "view": {
28 | "form.default": {
29 | "name": "Parameter Value",
30 | "description": "Displays the value of a setting."
31 | },
32 | "list.default": {
33 | "name": "List of parameters values.",
34 | "description": "Displays the value of settings."
35 | }
36 | },
37 | "error": {
38 | }
39 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/Assignment.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Asignación",
3 | "plural": "Asignaciones",
4 | "description": "",
5 | "model": {
6 | "id": {
7 | "label": "Identificador",
8 | "description": "",
9 | "help": ""
10 | },
11 | "object_class": {
12 | "label": "Clase",
13 | "description": "Nombre completo de la entidad sobre la que se aplica la asignación de roles.",
14 | "help": ""
15 | },
16 | "object_id": {
17 | "label": "Objeto",
18 | "description": "Identificador del objeto específico al que se asigna el rol.",
19 | "help": ""
20 | },
21 | "user_id": {
22 | "label": "Usuario",
23 | "description": "Usuario al que se asigna el rol.",
24 | "help": ""
25 | },
26 | "role": {
27 | "label": "Rol",
28 | "description": "Rol que se asigna al usuario.",
29 | "help": "El rol asignado debe coincidir con uno de los roles definidos a nivel de entidad y devueltos por el método `getRole()`."
30 | }
31 | },
32 | "view": [],
33 | "error": []
34 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/Lang.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Idioma",
3 | "plural": "Idiomas",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Nombre",
8 | "description": "Nombre del idioma.",
9 | "help": ""
10 | },
11 | "code": {
12 | "label": "Código",
13 | "description": "Código de idioma (ISO 639): 2 letras minúsculas.",
14 | "help": ""
15 | }
16 | },
17 | "view": {
18 | "form.default": {
19 | "name": "Idioma",
20 | "description": "Formulario de idioma.",
21 | "layout": []
22 | },
23 | "list.default": {
24 | "name": "Lista de idomas",
25 | "description": ""
26 | }
27 | },
28 | "error": []
29 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/Log.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Log",
3 | "plural": "Logs",
4 | "description": "",
5 | "model": {
6 | "created": {
7 | "label": "Creado",
8 | "description": "Fecha de creación.",
9 | "help": ""
10 | },
11 | "user_id": {
12 | "label": "Usuario",
13 | "description": "Usuario que realizó la acción.",
14 | "help": ""
15 | },
16 | "object_class": {
17 | "label": "Clase",
18 | "description": "Clase de entidad con la que está relacionada esta entrada.",
19 | "help": ""
20 | },
21 | "object_id": {
22 | "label": "Identificador",
23 | "description": "Identificador del objeto objetivo (de la clase dada).",
24 | "help": ""
25 | },
26 | "value": {
27 | "label": "Valor",
28 | "description": "Cambios (nuevos valores) realizados en el objeto, si los hay.",
29 | "help": "Representación JSON de los nuevos valores(diff) del objeto (si se han realizado cambios)."
30 | },
31 | "name": {
32 | "label": "Nombre",
33 | "description": "El nombre de la acción realizada en el objeto de destino (\\'create\\', \\'update\\', \\'delete\\' o cualquier valor personalizado).",
34 | "help": ""
35 | }
36 | },
37 | "view": {
38 | "form.default": {
39 | "name": "Logs",
40 | "description": "Formulario de logs",
41 | "layout": []
42 | },
43 | "list.default": {
44 | "name": "Lista de logs",
45 | "description": ""
46 | }
47 | },
48 | "error": []
49 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/Permission.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Permiso",
3 | "plural": "Permisos",
4 | "description": "Permisos",
5 | "model": {
6 | "class_name": {
7 | "label": "Clase",
8 | "description": "",
9 | "help": ""
10 | },
11 | "domain": {
12 | "label": "Dominio",
13 | "description": "Valor JSON del dominio de restricciones.",
14 | "help": ""
15 | },
16 | "group_id": {
17 | "label": "Grupo",
18 | "description": "Grupo al que pertenece el permiso.",
19 | "help": ""
20 | },
21 | "user_id": {
22 | "label": "Usuario",
23 | "description": "",
24 | "help": ""
25 | },
26 | "rights": {
27 | "label": "Permiso",
28 | "description": "Los permisos se establecen mediante una máscara binaria",
29 | "help": ""
30 | },
31 | "rights_txt": {
32 | "label": "Permiso texto",
33 | "description": "Traducción en texto de los derechos del permiso.",
34 | "help": ""
35 | }
36 | },
37 | "view": {
38 | "form.default": {
39 | "name": "Permiso",
40 | "description": "Formulario de permisos.",
41 | "layout": [],
42 | "routes": []
43 | },
44 | "list.default": {
45 | "name": "Lista de permisos",
46 | "description": ""
47 | }
48 | },
49 | "error": []
50 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/TaskLog.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Registro de tarea",
3 | "plural": "Registros de tareas",
4 | "description": "",
5 | "model": {
6 | "created": {
7 | "label": "Creado",
8 | "description": "Fecha de creación.",
9 | "help": ""
10 | },
11 | "task_id": {
12 | "label": "Tarea",
13 | "description": "Tarea a la que se refiere el registro.",
14 | "help": ""
15 | },
16 | "status": {
17 | "label": "Estado",
18 | "description": "Estado en función del resultado de la ejecución de la Tarea.",
19 | "help": ""
20 | },
21 | "log": {
22 | "label": "Log",
23 | "description": "El valor devuelto en la ejecución del controlador al que se dirige la Tarea.",
24 | "help": ""
25 | }
26 | },
27 | "view": {
28 | "form.default": {
29 | "name": "Registro de tarea",
30 | "description": "",
31 | "layout": []
32 | },
33 | "list.default": {
34 | "name": "Lista de registro de tarea",
35 | "description": ""
36 | }
37 | },
38 | "error": []
39 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/Version.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Versión",
3 | "plural": "Veriones",
4 | "description": "",
5 | "model": {
6 | "object_class": {
7 | "label": "Clase",
8 | "description": "Clase del objeto de destino",
9 | "help": ""
10 | },
11 | "object_id": {
12 | "label": "Identificador",
13 | "description": "Identificador del objeto.",
14 | "help": ""
15 | },
16 | "serialized_value": {
17 | "label": "valor serializado",
18 | "description": "",
19 | "help": ""
20 | },
21 | "lang": {
22 | "label": "Idioma",
23 | "description": "Idioma del objeto.",
24 | "help": ""
25 | }
26 | },
27 | "view": [],
28 | "error": []
29 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/alert/MessageModel.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Modelo de mensaje de alerta",
3 | "plural": "Modelos de mensajes de alertas.",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Nombre",
8 | "description": "Identificador de opción de parámetro.",
9 | "help": ""
10 | },
11 | "label": {
12 | "label": "Etiqueta",
13 | "description": "Título del mensaje.",
14 | "help": ""
15 | },
16 | "description": {
17 | "label": "Descripción",
18 | "description": "Descripción del significado del mensaje.",
19 | "help": ""
20 | },
21 | "type": {
22 | "label": "Tipo",
23 | "description": "Tipo de mensaje.",
24 | "help": ""
25 | },
26 | "messages_ids": {
27 | "label": "Mensajes",
28 | "description": "",
29 | "help": ""
30 | }
31 | },
32 | "view": {
33 | "form.default": {
34 | "name": "Modelo de mensaje de alerta",
35 | "description": "Formulario de modelo de mensaje de alerta.",
36 | "layout": []
37 | },
38 | "list.default": {
39 | "name": "Lista de modelos de mensajes de alerta.",
40 | "description": ""
41 | }
42 | },
43 | "error": []
44 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/setting/SettingChoice.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Elección de configuración",
3 | "plural": "Elecciones de configuraciónes",
4 | "description": "Opciones disponibles por una configuración",
5 | "model": {
6 | "name": {
7 | "label": "Nombre",
8 | "description": "Nombre de la configuración.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Configuración",
13 | "description": "Configuración que se adjunta la opción.",
14 | "help": ""
15 | },
16 | "value": {
17 | "label": "Valor",
18 | "description": "Valor de opción de la configuración.",
19 | "help": ""
20 | }
21 | },
22 | "view": {
23 | "form.default": {
24 | "name": "Opción de la configuración",
25 | "description": "Muestra una opción de la configuración.",
26 | "layout": []
27 | },
28 | "list.default": {
29 | "name": "",
30 | "description": ""
31 | }
32 | },
33 | "error": []
34 | }
--------------------------------------------------------------------------------
/packages/core/i18n/es/setting/SettingValue.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Valor de la configuración",
3 | "plural": "Valores de configuraciones",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Nombre",
8 | "description": "Identificador de la configuración.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Configuración",
13 | "description": "Configuración al que se adjunta el valor.",
14 | "help": ""
15 | },
16 | "user_id": {
17 | "label": "Usuario",
18 | "description": "Usuario al que pertenece la configuración.",
19 | "help": ""
20 | },
21 | "value": {
22 | "label": "Valor",
23 | "description": "Valor de la configuración.",
24 | "help": ""
25 | }
26 | },
27 | "view": {
28 | "form.default": {
29 | "name": "Valor de la configuración",
30 | "description": "Muestra un valor de la configuración.",
31 | "layout": []
32 | },
33 | "list.default": {
34 | "name": "",
35 | "description": ""
36 | }
37 | },
38 | "error": []
39 | }
--------------------------------------------------------------------------------
/packages/core/i18n/fr/Model.json:
--------------------------------------------------------------------------------
1 | {
2 | "model": {
3 | "id": {
4 | "label": "Identifiant",
5 | "description": "Identifiant unique de l'objet.",
6 | "help": ""
7 | },
8 | "name": {
9 | "label": "Libellé",
10 | "description": "Nom de l'objet.",
11 | "help": ""
12 | },
13 | "creator": {
14 | "label": "Créé par",
15 | "description": "Utilisateur ayant créé l'objet.",
16 | "help": ""
17 | },
18 | "created": {
19 | "label": "Créé",
20 | "description": "Date de création de l'objet.",
21 | "help": ""
22 | },
23 | "modifier": {
24 | "label": "Modifié par",
25 | "description": "Dernier utilisateur a avoir modifié l'objet.",
26 | "help": ""
27 | },
28 | "modified": {
29 | "label": "Modifié",
30 | "description": "Date de dernière modification.",
31 | "help": ""
32 | },
33 | "deleted": {
34 | "label": "Supprimé",
35 | "description": "Indicateur pour les objets supprimés.",
36 | "help": ""
37 | },
38 | "state": {
39 | "label": "Statut",
40 | "description": "Etat de l'objet (brouillon, instance, archive).",
41 | "help": ""
42 | }
43 | },
44 | "view": {
45 | },
46 | "error": {
47 | }
48 | }
--------------------------------------------------------------------------------
/packages/core/i18n/fr/alert/MessageModel.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Modèle de message d'alerte",
3 | "plural": "Modèles de messages d'alerte",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Nom",
8 | "description": "Identifiant de l'option de paramètre.",
9 | "help": ""
10 | },
11 | "label": {
12 | "label": "Libellé",
13 | "description": "Titre du message.",
14 | "help": ""
15 | },
16 | "description": {
17 | "label": "Description",
18 | "description": "Descriptif du motif de l'alerte.",
19 | "help": ""
20 | },
21 | "type": {
22 | "label": "Type",
23 | "description": "Type de message.",
24 | "help": ""
25 | }
26 | },
27 | "view": {
28 | "form.default": {
29 | "name": "Modèle de message",
30 | "description": "Modèe de message d'alerte."
31 | },
32 | "list.default": {
33 | "name": "Modèles des messages",
34 | "description": "Liste des modèles de messages d'alerte."
35 | }
36 | },
37 | "error": {
38 | }
39 | }
--------------------------------------------------------------------------------
/packages/core/i18n/fr/mail_test.html:
--------------------------------------------------------------------------------
1 |
2 | Message email de test envoyé avec succès depuis {{ url }} !
3 |
--------------------------------------------------------------------------------
/packages/core/i18n/fr/mail_user_confirm.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Bonjour ,
4 |
5 | Bienvenue sur notre plateforme !
6 | Ton inscription a bien été prise en compte et tu peux désormais utiliser l'application.
7 | Cependant, pour que ton profil soit complet, tu es invité à valider ton adresse email en cliquant sur le lien ci-dessous.
8 |
9 |
10 |
11 |
12 | Ceci est un message automatique envoyé depuis suite à une inscription renseignant votre adresse email.
13 | Si vous n'êtes pas à l'origine de cette requête, ignorez simplement ce message. Sans réponse dans les 24h, votre adresse email sera automatiquement supprimée de notre base de données.
14 |
15 |
--------------------------------------------------------------------------------
/packages/core/i18n/fr/mail_user_pass_recover.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Bonjour ,
4 |
5 |
6 | Ceci est un message automatique suite à votre demande de récupération de mot de passe.
7 |
8 | Vous pouvez modifier votre mot de passe en utilisant le lien ci-dessous (valide durant les 15 prochaines minutes).
9 |
10 |
11 |
12 |
13 |
14 | Ceci est un message automatique envoyé depuis .
15 |
16 | Si vous n'êtes pas à l'origine de cette requête, ignorez simplement ce message. Aucun changement ne sera fait à votre compte.
17 | En cas de messages non sollicités répétés, merci de le signaler à
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/core/i18n/fr/setting/SettingChoice.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Choix du paramètre",
3 | "plural": "Choix des paramètres",
4 | "description": "Options disponibles pour un paramètre",
5 | "model": {
6 | "name": {
7 | "label": "Nom",
8 | "description": "Identifiant de l'option de paramètre.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Paramètre",
13 | "description": "Paramètre auquel est attaché l'option.",
14 | "help": ""
15 | },
16 | "value": {
17 | "label": "Valeur",
18 | "description": "Valeur de l'option de paramètre.",
19 | "help": ""
20 | }
21 | },
22 | "view": {
23 | "form.default": {
24 | "name": "Option de paramètre",
25 | "description": "Affiche une option de paramètre"
26 | },
27 | "list.default": {
28 | "name": "Liste des valeurs des options de paramètres",
29 | "description": "Liste des options des paramètres."
30 | }
31 | },
32 | "error": {
33 | }
34 | }
--------------------------------------------------------------------------------
/packages/core/i18n/fr/setting/SettingValue.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Valeur du paramètre",
3 | "plural": "Valeurs des paramètres",
4 | "description": "",
5 | "model": {
6 | "name": {
7 | "label": "Nom",
8 | "description": "Identifiant du paramètre.",
9 | "help": ""
10 | },
11 | "setting_id": {
12 | "label": "Paramètre",
13 | "description": "Paramètre auquel est attaché la valeur.",
14 | "help": ""
15 | },
16 | "user_id": {
17 | "label": "Utilisateur",
18 | "description": "Utilisateur auquel appartient le paramètre.",
19 | "help": ""
20 | },
21 | "value": {
22 | "label": "Valeur",
23 | "description": "Valeur du paramètre.",
24 | "help": ""
25 | }
26 | },
27 | "view": {
28 | "form.default": {
29 | "name": "Valeur du paramètre",
30 | "description": "Affiche une valeur de paramètre."
31 | },
32 | "list.default": {
33 | "name": "Liste des valeurs de paramètres",
34 | "description": "Liste des valeurs des paramètres."
35 | }
36 | },
37 | "error": {
38 | }
39 | }
--------------------------------------------------------------------------------
/packages/core/init/assets/img/equal_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/packages/core/init/assets/img/equal_logo.png
--------------------------------------------------------------------------------
/packages/core/init/assets/img/equal_presentation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/packages/core/init/assets/img/equal_presentation.gif
--------------------------------------------------------------------------------
/packages/core/init/assets/img/equal_summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/packages/core/init/assets/img/equal_summary.png
--------------------------------------------------------------------------------
/packages/core/init/assets/img/equal_symbol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/packages/core/init/assets/img/equal_symbol.png
--------------------------------------------------------------------------------
/packages/core/init/data/core_Group.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\Group",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": 1,
8 | "name": "admins",
9 | "display_name": "Administrators",
10 | "description": "Users with admin privileges.",
11 | "users_ids": [
12 | "1"
13 | ]
14 | },
15 | {
16 | "id": 2,
17 | "name": "users",
18 | "display_name": "All Users",
19 | "description": "Default group for users.",
20 | "users_ids": [
21 | "1",
22 | "2"
23 | ]
24 | }
25 | ]
26 | },
27 | {
28 | "name": "core\\Group",
29 | "lang": "fr",
30 | "data": [
31 | {
32 | "id": 1,
33 | "display_name": "Administrateurs",
34 | "description": "Utilisateurs avec privilèges d'administration."
35 | },
36 | {
37 | "id": 2,
38 | "display_name": "Tous les utilisateurs",
39 | "description": "Groupe par défaut pour les utilisateurs."
40 | }
41 | ]
42 | }
43 | ]
--------------------------------------------------------------------------------
/packages/core/init/data/core_Lang.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\Lang",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": "1",
8 | "name": "English",
9 | "code": "en"
10 | },
11 | {
12 | "id": "2",
13 | "name": "French",
14 | "code": "fr"
15 | },
16 | {
17 | "id": "3",
18 | "name": "Nederlands",
19 | "code": "nl"
20 | }
21 | ]
22 | },
23 | {
24 | "name": "core\\Lang",
25 | "lang": "fr",
26 | "data": [
27 | {
28 | "id": "1",
29 | "name": "Anglais"
30 | },
31 | {
32 | "id": "2",
33 | "name": "Français"
34 | },
35 | {
36 | "id": "3",
37 | "name": "Néérlandais"
38 | }
39 | ]
40 | },
41 | {
42 | "name": "core\\Lang",
43 | "lang": "nl",
44 | "data": [
45 | {
46 | "id": "1",
47 | "name": "Engels"
48 | },
49 | {
50 | "id": "2",
51 | "name": "Frans"
52 | },
53 | {
54 | "id": "3",
55 | "name": "Nederlands"
56 | }
57 | ]
58 | }
59 | ]
--------------------------------------------------------------------------------
/packages/core/init/data/core_Meta.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\Meta",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "name": "workflow.core.User",
8 | "code": "workflow",
9 | "reference": "core.User",
10 | "value": "{\"created\":{\"position\":{\"x\":192,\"y\":193},\"transitions\":{\"validation\":{\"anchorFrom\":4,\"anchorTo\":3}}},\"validated\":{\"position\":{\"x\":368,\"y\":193},\"transitions\":{\"suspension\":{\"anchorFrom\":4,\"anchorTo\":3},\"confirmation\":{\"anchorFrom\":4,\"anchorTo\":3}}},\"confirmed\":{\"position\":{\"x\":633,\"y\":106},\"transitions\":{\"suspension\":{\"anchorFrom\":1,\"anchorTo\":6}}},\"suspended\":{\"position\":{\"x\":630,\"y\":302},\"transitions\":{\"confirmation\":{\"anchorFrom\":1,\"anchorTo\":6}}}}"
11 | }
12 | ]
13 | }
14 | ]
--------------------------------------------------------------------------------
/packages/core/init/data/core_Permission.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\Permission",
4 | "lang": "en",
5 | "description": "Grant READ permission on common objects (`core` package).",
6 | "data": [
7 | {
8 | "class_name": "core\\*",
9 | "domain": "",
10 | "group_id": 2,
11 | "user_id": null,
12 | "rights": 2
13 | }
14 | ]
15 | }
16 | ]
--------------------------------------------------------------------------------
/packages/core/init/data/core_User.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\User",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": 1,
8 | "login": "root@equal.local",
9 | "password": "secure_password",
10 | "firstname": "Root",
11 | "lastname": "USER",
12 | "language": "en",
13 | "validated": true,
14 | "groups_ids": [1, 2]
15 | },
16 | {
17 | "id": 2,
18 | "login": "user@equal.local",
19 | "password": "safe_pass",
20 | "firstname": "First",
21 | "lastname": "USER",
22 | "language": "en",
23 | "validated": true,
24 | "groups_ids": [2]
25 | }
26 | ]
27 | }
28 | ]
--------------------------------------------------------------------------------
/packages/core/init/demo/core_security_SecurityPolicy.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\security\\SecurityPolicy",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": 1,
8 | "name": "default policy",
9 | "is_active": true,
10 | "description": null
11 | }
12 | ]
13 | }
14 | ]
--------------------------------------------------------------------------------
/packages/core/init/demo/core_security_SecurityPolicyRule.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\security\\SecurityPolicyRule",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": 1,
8 | "name": "Ip address (for Everyone)",
9 | "user_id": null,
10 | "security_policy_id": 1,
11 | "policy_rule_type": "ip_address",
12 | "description": "Request IP address match against one or more values."
13 | },
14 | {
15 | "id": 2,
16 | "name": "Time range (for Everyone)",
17 | "user_id": null,
18 | "security_policy_id": 1,
19 | "policy_rule_type": "time_range",
20 | "description": "Time of Request included in at least one the listed time ranges."
21 | }
22 | ]
23 | }
24 | ]
--------------------------------------------------------------------------------
/packages/core/init/demo/core_security_SecurityPolicyRuleValue.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "core\\security\\SecurityPolicyRuleValue",
4 | "lang": "en",
5 | "data": [
6 | {
7 | "id": 1,
8 | "security_policy_id": 1,
9 | "policy_rule_id": 1,
10 | "value": "109.135.28.87"
11 | },
12 | {
13 | "id": 2,
14 | "security_policy_id": 1,
15 | "policy_rule_id": 2,
16 | "value": "mon@8:00-mon@18:30"
17 | },
18 | {
19 | "id": 3,
20 | "security_policy_id": 1,
21 | "policy_rule_id": 2,
22 | "value": "tue@8:00-tue@18:30"
23 | },
24 | {
25 | "id": 4,
26 | "security_policy_id": 1,
27 | "policy_rule_id": 2,
28 | "value": "wed@8:00-wed@18:30"
29 | },
30 | {
31 | "id": 5,
32 | "security_policy_id": 1,
33 | "policy_rule_id": 2,
34 | "value": "thu@8:00-thu@18:30"
35 | },
36 | {
37 | "id": 6,
38 | "security_policy_id": 1,
39 | "policy_rule_id": 2,
40 | "value": "fri@8:00-fri@18:30"
41 | }
42 | ]
43 | }
44 | ]
--------------------------------------------------------------------------------
/packages/core/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "core",
3 | "description": "Foundation package holding common application logic and elementary entities.",
4 | "version": "2.0",
5 | "authors": ["Cedric Francoys"],
6 | "license": "LGPL-3",
7 | "tags": [ "equal", "core" ],
8 | "depends_on": [],
9 | "requires": {
10 | "swiftmailer/swiftmailer": "^6.2",
11 | "phpoffice/phpspreadsheet": "^1.4",
12 | "dompdf/dompdf": "^0.8.3"
13 | },
14 | "apps": [ "apps", "auth", "app", "settings", "workbench", "welcome" ]
15 | }
16 |
--------------------------------------------------------------------------------
/packages/core/tests/auth.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU GPL 3 license
6 | */
7 |
8 | $tests = [
9 |
10 | '0101' => [
11 | 'description' => "Retrieve authentication service from eQual::announce",
12 | 'return' => ['object'],
13 | 'assert' => function($auth) {
14 | return ($auth instanceof equal\auth\AuthenticationManager);
15 | },
16 | 'act' => function () {
17 | list($params, $providers) = eQual::announce([
18 | 'providers' => ['equal\auth\AuthenticationManager']
19 | ]);
20 | return $providers['equal\auth\AuthenticationManager'];
21 | }
22 | ],
23 |
24 | '0102' => [
25 | 'description' => "Get auth provider using a custom registered name.",
26 | 'return' => ['object'],
27 | 'assert' => function($auth) {
28 | return ($auth instanceof equal\auth\AuthenticationManager);
29 | },
30 | 'act' => function (){
31 | list($params, $providers) = eQual::announce([
32 | 'providers' => ['@@testAuth' => 'equal\auth\AuthenticationManager']
33 | ]);
34 | return $providers['@@testAuth'];
35 | }
36 | ]
37 | ];
--------------------------------------------------------------------------------
/packages/core/tests/computed.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU GPL 3 license
6 | */
7 |
8 | $tests = [
9 |
10 | '1001' => [
11 | 'description' => "Checking dependents chaining with computed field of related object.",
12 | 'act' => function () {
13 | $result = [];
14 | $test = core\test\Test::create(['string_short' => 'test 0'])->read(['id'])->first();
15 | $test1 = core\test\Test1::create(['test_id' => $test['id']])->read(['id', 'test'])->first();
16 | $result[] = $test1['test'];
17 | core\test\Test::id($test['id'])->update(['string_short' => 'test 1']);
18 | $test1 = core\test\Test1::id($test1['id'])->read(['test'])->first();
19 | $result[] = $test1['test'];
20 | return $result;
21 | },
22 | 'assert' => function($result) {
23 | return ($result[0] == 'test 0' && $result[1] == 'test 1');
24 | }
25 | ]
26 |
27 | ];
--------------------------------------------------------------------------------
/packages/core/views/Assignment.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Assignments",
3 | "description": "List of existing Role assignments granted to users.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "object_class",
14 | "width": "20%",
15 | "widget": {
16 | "sortable": true
17 | }
18 | },
19 | {
20 | "type": "field",
21 | "value": "object_id",
22 | "width": "15%"
23 | },
24 | {
25 | "type": "field",
26 | "value": "user_id",
27 | "width": "15%"
28 | },
29 | {
30 | "type": "field",
31 | "value": "role",
32 | "width": "25%"
33 | }
34 | ]
35 | }
36 | }
--------------------------------------------------------------------------------
/packages/core/views/Group.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Groups list",
3 | "description": "This view is intended for displaying basic listing of existing groups",
4 | "order": "name",
5 | "sort": "asc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "name",
11 | "width": "25%",
12 | "widget": {
13 | "sortable": true
14 | }
15 | },
16 | {
17 | "type": "field",
18 | "value": "display_name",
19 | "width": "35%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "description",
24 | "width": "35%"
25 | }
26 | ]
27 | }
28 | }
--------------------------------------------------------------------------------
/packages/core/views/Group.list.selection.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Groups selection",
3 | "description": "Intended for picking up one or more group(s).",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "20%"
10 | }
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/packages/core/views/Lang.form.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Language",
3 | "description": "Default form for language.",
4 | "layout": {
5 | "groups": [
6 | {
7 | "sections": [
8 | {
9 | "rows": [
10 | {
11 | "columns": [
12 | {
13 | "width": "100%",
14 | "align": "left",
15 | "items": [
16 | {
17 | "type": "field",
18 | "value": "name",
19 | "width": "50%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "code",
24 | "width": "50%"
25 | }
26 | ]
27 | }
28 | ]
29 | }
30 | ]
31 | }
32 | ]
33 | }
34 | ]
35 | }
36 | }
--------------------------------------------------------------------------------
/packages/core/views/Lang.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Languages listing",
3 | "description": "Full list of available languages.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "20%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "code",
14 | "width": "20%"
15 | }
16 | ]
17 | }
18 | }
--------------------------------------------------------------------------------
/packages/core/views/Log.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Logs list",
3 | "description": "This view is intended for displaying basic logs",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "5%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "created",
14 | "width": "10%"
15 | },
16 | {
17 | "type": "field",
18 | "value": "user_id",
19 | "label": "User",
20 | "width": "10%"
21 | },
22 | {
23 | "type": "field",
24 | "value": "action",
25 | "width": "20%"
26 | },
27 | {
28 | "type": "field",
29 | "value": "object_class",
30 | "link": true,
31 | "width": "35%"
32 | },
33 | {
34 | "type": "field",
35 | "value": "object_id",
36 | "width": "35%"
37 | }
38 | ]
39 | }
40 | }
--------------------------------------------------------------------------------
/packages/core/views/Meta.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Meta values listing",
3 | "description": "Full list of existing meta values.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "20%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "code",
14 | "width": "20%"
15 | },
16 | {
17 | "type": "field",
18 | "value": "reference",
19 | "width": "20%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "value",
24 | "width": "20%"
25 | }
26 |
27 | ]
28 | }
29 | }
--------------------------------------------------------------------------------
/packages/core/views/Permission.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Permissions list",
3 | "description": "This view is intended for displaying basic listing of existing permissions",
4 | "order": "name",
5 | "sort": "asc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "class_name",
11 | "width": "15%",
12 | "widget": {
13 | "sortable": true
14 | }
15 | },
16 | {
17 | "type": "field",
18 | "value": "domain",
19 | "width": "15%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "group_id",
24 | "width": "20%"
25 | },
26 |
27 | {
28 | "type": "field",
29 | "value": "user_id",
30 | "width": "20%"
31 | },
32 | {
33 | "type": "field",
34 | "value": "rights_txt",
35 | "label": "Rights",
36 | "width": "30%"
37 | }
38 | ]
39 | }
40 | }
--------------------------------------------------------------------------------
/packages/core/views/TaskLog.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Task Logs",
3 | "description": "Logs of the scheduled task.",
4 | "order": "created",
5 | "sort": "desc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "created",
11 | "width": "25%",
12 | "sortable": true
13 | },
14 | {
15 | "type": "field",
16 | "value": "status",
17 | "width": "15%",
18 | "sortable": true
19 | }
20 | ]
21 | }
22 | }
--------------------------------------------------------------------------------
/packages/core/views/Translation.form.default.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/core/views/Translation.list.default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/packages/core/views/alert/Message.list.dashboard.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Messages list",
3 | "description": "Listing of pending messages.",
4 | "header": {
5 | "actions": {
6 | "ACTION.CREATE": false
7 | },
8 | "selection": {
9 | "default" : false,
10 | "actions" : [
11 | {
12 | "id": "header.selection.actions.bulk_dismiss",
13 | "label": "Re-check",
14 | "icon": "replay",
15 | "controller": "core_alert_bulk-dismiss"
16 | }
17 | ]
18 | }
19 | },
20 | "layout": {
21 | "items": [
22 | {
23 | "type": "field",
24 | "value": "label",
25 | "width": "25%"
26 | },
27 | {
28 | "type": "field",
29 | "value": "object_link",
30 | "width": "25%"
31 | },
32 | {
33 | "type": "field",
34 | "value": "description",
35 | "label": "Name",
36 | "width": "35%"
37 | },
38 | {
39 | "type": "field",
40 | "value": "severity",
41 | "width": "15%"
42 | }
43 | ]
44 | }
45 | }
--------------------------------------------------------------------------------
/packages/core/views/alert/Message.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Messages list",
3 | "description": "Listing of pending messages.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "created",
9 | "width": "25%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "creator",
14 | "width": "25%"
15 | },
16 | {
17 | "type": "field",
18 | "value": "message_model_id",
19 | "width": "25%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "object_class",
24 | "width": "20%"
25 | },
26 | {
27 | "type": "field",
28 | "value": "object_id",
29 | "width": "10%"
30 | },
31 | {
32 | "type": "field",
33 | "value": "severity",
34 | "width": "15%"
35 | },
36 | {
37 | "type": "field",
38 | "value": "controller",
39 | "width": "15%"
40 | },
41 | {
42 | "type": "field",
43 | "value": "params",
44 | "width": "15%"
45 | }
46 | ]
47 | }
48 | }
--------------------------------------------------------------------------------
/packages/core/views/alert/MessageModel.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Message Models list",
3 | "description": "Listing messages models.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "25%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "label",
14 | "width": "25%"
15 | },
16 | {
17 | "type": "field",
18 | "value": "type",
19 | "width": "25%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "description",
24 | "width": "50%"
25 | }
26 | ]
27 | }
28 | }
--------------------------------------------------------------------------------
/packages/core/views/import/ColumnMapping.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Column Mappings",
3 | "description": "Listing view for Column Mapping items.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "entity_mapping_id",
16 | "width": "20%",
17 | "sortable": true
18 | },
19 | {
20 | "type": "field",
21 | "value": "mapping_type",
22 | "width": "20%",
23 | "sortable": true
24 | },
25 | {
26 | "type": "field",
27 | "value": "origin",
28 | "width": "20%",
29 | "sortable": true
30 | },
31 | {
32 | "type": "field",
33 | "value": "target_name",
34 | "width": "20%",
35 | "sortable": true
36 | }
37 | ]
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/packages/core/views/import/DataTransformer.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Data Transformers",
3 | "description": "Listing view for Data Transformer items.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "column_mapping_id",
16 | "width": "40%",
17 | "sortable": true
18 | },
19 | {
20 | "type": "field",
21 | "value": "transformer_type",
22 | "width": "40%",
23 | "sortable": true
24 | },
25 | {
26 | "type": "field",
27 | "value": "order",
28 | "width": "10%",
29 | "sortable": true
30 | }
31 | ]
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/packages/core/views/import/DataTransformerMapValue.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Data Transformer Map Value",
3 | "description": "Listing view for Data Transformer Map Value items.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "data_transformer_id",
16 | "width": "25%",
17 | "sortable": true
18 | },
19 | {
20 | "type": "field",
21 | "value": "old_value",
22 | "width": "25%",
23 | "sortable": true
24 | },
25 | {
26 | "type": "field",
27 | "value": "new_value",
28 | "width": "25%",
29 | "sortable": true
30 | }
31 | ]
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/packages/core/views/import/EntityMapping.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Entity Mappings",
3 | "description": "Listing view for Entity Mapping items.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "name",
16 | "width": "33%",
17 | "sortable": true,
18 | "readonly": false
19 | },
20 | {
21 | "type": "field",
22 | "value": "entity",
23 | "width": "33%",
24 | "sortable": true,
25 | "readonly": false
26 | },
27 | {
28 | "type": "field",
29 | "value": "mapping_type",
30 | "width": "25%",
31 | "sortable": true,
32 | "readonly": false
33 | }
34 | ]
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/packages/core/views/menu.sandbox.left.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sandbox menu",
3 | "access": {
4 | "groups": ["users"]
5 | },
6 | "layout": {
7 | "items": [
8 | {
9 | "id": "users",
10 | "type": "entry",
11 | "label": "Users",
12 | "description": "",
13 | "context": {
14 | "entity": "core\\User",
15 | "view": "list.default"
16 | }
17 | }
18 | ]
19 | }
20 | }
--------------------------------------------------------------------------------
/packages/core/views/menu.workbench.left.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Workbench menu",
3 | "access": {
4 | "groups": [
5 | "users"
6 | ]
7 | },
8 | "layout": {
9 | "items": [
10 | {
11 | "id": "components",
12 | "type": "entry",
13 | "label": "Components",
14 | "icon": "category",
15 | "route": "/"
16 | },
17 | {
18 | "id": "pipelines",
19 | "type": "entry",
20 | "label": "Pipelines",
21 | "icon": "insights",
22 | "route": "/pipelines"
23 | },
24 | {
25 | "id": "uml.erd",
26 | "type": "entry",
27 | "label": "ERD",
28 | "icon": "account_tree",
29 | "route": "/uml"
30 | },
31 | {
32 | "id": "routes",
33 | "type": "entry",
34 | "label": "Routes",
35 | "icon": "route",
36 | "route": "/routes"
37 | }
38 | ]
39 | }
40 | }
--------------------------------------------------------------------------------
/packages/core/views/notification/Notification.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Notifications",
3 | "description": "List of existing Notifications sent to users.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "id",
9 | "width": "10%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "title",
14 | "width": "25%",
15 | "widget": {
16 | "sortable": true
17 | }
18 | },
19 | {
20 | "type": "field",
21 | "value": "user_id",
22 | "width": "20%",
23 | "widget": {
24 | "sortable": true
25 | }
26 | },
27 | {
28 | "type": "field",
29 | "value": "status",
30 | "width": "15%",
31 | "widget": {
32 | "sortable": true
33 | }
34 | },
35 | {
36 | "type": "field",
37 | "value": "is_persistent",
38 | "width": "10%"
39 | },
40 | {
41 | "type": "field",
42 | "value": "remind_frequency",
43 | "width": "15%"
44 | }
45 | ]
46 | }
47 | }
--------------------------------------------------------------------------------
/packages/core/views/security/SecurityPolicy.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Groups list",
3 | "description": "This view is intended for displaying basic listing of existing groups",
4 | "order": "name",
5 | "sort": "asc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "name",
11 | "width": "25%",
12 | "widget": {
13 | "sortable": true
14 | }
15 | },
16 | {
17 | "type": "field",
18 | "value": "created",
19 | "width": "10%",
20 | "widget": {
21 | "sortable": true
22 | }
23 | },
24 | {
25 | "type": "field",
26 | "value": "is_active",
27 | "width": "10%",
28 | "widget": {
29 | "sortable": true
30 | }
31 | },
32 | {
33 | "type": "field",
34 | "value": "description",
35 | "width": "35%"
36 | }
37 | ]
38 | }
39 | }
--------------------------------------------------------------------------------
/packages/core/views/security/SecurityPolicyRule.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Groups list",
3 | "description": "This view is intended for displaying basic listing of existing groups",
4 | "order": "name",
5 | "sort": "asc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "name",
11 | "width": "25%",
12 | "widget": {
13 | "sortable": true
14 | }
15 | },
16 | {
17 | "type": "field",
18 | "value": "created",
19 | "width": "10%",
20 | "widget": {
21 | "sortable": true
22 | }
23 | },
24 | {
25 | "type": "field",
26 | "value": "user_id",
27 | "width": "10%",
28 | "widget": {
29 | "sortable": true
30 | }
31 | },
32 | {
33 | "type": "field",
34 | "value": "description",
35 | "width": "35%"
36 | }
37 | ]
38 | }
39 | }
--------------------------------------------------------------------------------
/packages/core/views/security/SecurityPolicyRuleValue.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Policy Rule Values",
3 | "description": "List of Policy Rule values.",
4 | "order": "name",
5 | "sort": "asc",
6 | "layout": {
7 | "items": [
8 | {
9 | "type": "field",
10 | "value": "name",
11 | "width": "25%",
12 | "widget": {
13 | "sortable": true
14 | }
15 | },
16 | {
17 | "type": "field",
18 | "value": "security_policy_id",
19 | "label": "Security Policy",
20 | "width": "15%",
21 | "widget": {
22 | "sortable": true
23 | }
24 | },
25 | {
26 | "type": "field",
27 | "value": "policy_rule_id",
28 | "label": "Policy Rule",
29 | "width": "15%",
30 | "widget": {
31 | "sortable": true
32 | }
33 | },
34 | {
35 | "type": "field",
36 | "value": "value",
37 | "width": "35%"
38 | }
39 | ]
40 | }
41 | }
--------------------------------------------------------------------------------
/packages/core/views/setting/Setting.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Config params list",
3 | "description": "Default listing of configuration parameters.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "15%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "package",
16 | "label": "Package",
17 | "width": "15%",
18 | "sortable": true
19 | },
20 | {
21 | "type": "field",
22 | "value": "section",
23 | "label": "Section",
24 | "width": "10%",
25 | "sortable": true
26 | },
27 | {
28 | "type": "field",
29 | "value": "code",
30 | "width": "15%",
31 | "sortable": true
32 | },
33 | {
34 | "type": "field",
35 | "value": "type",
36 | "width": "10%",
37 | "sortable": true
38 | },
39 | {
40 | "type": "field",
41 | "value": "is_sequence",
42 | "label": "sequence",
43 | "width": "10%",
44 | "sortable": true
45 | },
46 | {
47 | "type": "field",
48 | "value": "description",
49 | "width": "25%"
50 | }
51 | ]
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/packages/core/views/setting/SettingChoice.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Config params list",
3 | "description": "Default listing of configuration parameters.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "33%"
10 | },
11 | {
12 | "type": "field",
13 | "value": "value",
14 | "width": "33%"
15 | },
16 | {
17 | "type": "field",
18 | "value": "setting_id",
19 | "width": "33%"
20 | }
21 | ]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/packages/core/views/setting/SettingSection.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Setting Sections",
3 | "description": "Default listing for setting sections.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "width": "25%",
10 | "sortable": true,
11 | "readonly": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "code",
16 | "width": "15%",
17 | "sortable": true
18 | },
19 | {
20 | "type": "field",
21 | "value": "description",
22 | "width": "45%"
23 | }
24 | ]
25 | }
26 | }
--------------------------------------------------------------------------------
/packages/core/views/setting/SettingSequence.form.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Setting sequence",
3 | "description": "Default form for Setting Sequence.",
4 | "layout": {
5 | "groups": [
6 | {
7 | "sections": [
8 | {
9 | "rows": [
10 | {
11 | "columns": [
12 | {
13 | "width": "100%",
14 | "align": "left",
15 | "items": [
16 | {
17 | "type": "field",
18 | "value": "setting_id",
19 | "width": "33%"
20 | },
21 | {
22 | "type": "field",
23 | "value": "value",
24 | "width": "33%"
25 | }
26 | ]
27 | }
28 | ]
29 | }
30 | ]
31 | }
32 | ]
33 | }
34 | ]
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/packages/core/views/setting/SettingSequence.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Config params sequences",
3 | "description": "Default listing of configuration sequences.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "label": "Name",
10 | "width": "30%",
11 | "sortable": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "value",
16 | "width": "25%"
17 | }
18 | ]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/core/views/setting/SettingValue.list.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Config params values",
3 | "description": "Default listing of configuration values.",
4 | "layout": {
5 | "items": [
6 | {
7 | "type": "field",
8 | "value": "name",
9 | "label": "Name",
10 | "width": "30%",
11 | "sortable": true
12 | },
13 | {
14 | "type": "field",
15 | "value": "user_id",
16 | "label": "User",
17 | "width": "25%",
18 | "sortable": true
19 | },
20 | {
21 | "type": "field",
22 | "value": "value",
23 | "width": "25%"
24 | }
25 | ]
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/packages/demo/classes/Foo.class.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU GPL 3 license
6 | */
7 | namespace demo;
8 |
9 | class Foo {
10 |
11 | public static function getColumns() {
12 | return [
13 | 'field_a' => [
14 | 'type' => 'string',
15 | 'multilang' => true
16 | ],
17 | 'field_b' => [
18 | 'type' => 'string'
19 | ]
20 | ];
21 | }
22 | }
--------------------------------------------------------------------------------
/packages/demo/classes/User.class.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU GPL 3 license
6 | */
7 | namespace demo;
8 |
9 | class User extends \core\User {
10 |
11 | public static function getColumns() {
12 | return [
13 | 'new_field' => [
14 | 'type' => 'string',
15 | 'multilang' => true
16 | ],
17 | 'myfile' => [
18 | 'type' => 'file'
19 | ]
20 | ];
21 | }
22 | }
--------------------------------------------------------------------------------
/packages/demo/data/announce.php:
--------------------------------------------------------------------------------
1 | 'This ia an example to show how to use the announce() method',
5 | 'params' => [
6 | 'a' => [
7 | 'description' => 'This is a mandatory argument that has to be formated as an integer',
8 | 'type' => 'integer',
9 | 'required' => true
10 | ],
11 | 'b' => [
12 | 'description' => 'This is an optional string argument',
13 | 'type' => 'string'
14 | ],
15 | 'c' => [
16 | 'description' => 'This is an optional argument with a default value (will always be present)',
17 | 'type' => 'string',
18 | 'default' => 'test'
19 | ]
20 |
21 | ]
22 | ]);
23 |
24 | print_r($params);
--------------------------------------------------------------------------------
/packages/demo/data/cities.php:
--------------------------------------------------------------------------------
1 | 'Get list of cities with pictures using teleport API.',
4 | 'params' => [
5 | ],
6 | 'response' => [
7 | 'content-type' => 'application/json',
8 | 'charset' => 'utf-8'
9 | ],
10 | 'providers' => ['context']
11 | ]);
12 |
13 | $json = file_get_contents('https://api.teleport.org/api/urban_areas/?embed=ua:item/ua:images');
14 | $data = json_decode($json, true);
15 |
16 | $cities = [];
17 |
18 | foreach($data['_embedded']['ua:item'] as $item) {
19 | $cities[$item['slug']] = $item['_embedded']['ua:images']['photos'][0]['image']['mobile'];
20 | }
21 |
22 | $providers['context']
23 | ->httpResponse()
24 | ->body($cities)
25 | ->send();
26 |
--------------------------------------------------------------------------------
/packages/demo/data/first.php:
--------------------------------------------------------------------------------
1 | 'Get picture data from imgur.com using imgur API.',
10 | 'params' => [
11 | 'id' => [
12 | 'description' => 'Hash of the image to retrieve',
13 | 'type' => 'string',
14 | 'default' => 'a5NE1kW'
15 | ]
16 | ],
17 | 'response' => [
18 | 'content-type' => 'application/json',
19 | 'charset' => 'utf-8'
20 | ],
21 | 'providers' => ['context']
22 | ]);
23 |
24 | $request = new httpRequest("GET https://api.imgur.com/3/image/{$params['id']}");
25 |
26 | $response = $request
27 | ->header('Authorization', "Client-ID 34030ab1f5ef12d")
28 | ->send();
29 |
30 | $providers['context']
31 | ->httpResponse()
32 | ->body(['result' => $response->body()])
33 | ->send();
--------------------------------------------------------------------------------
/packages/demo/data/listen.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, Cedric Francoys, 2010-2021
5 | Licensed under GNU LGPL 3 license
6 | */
7 | use equal\services\Container;
8 |
9 | $container = Container::getInstance();
10 | // retrieve required services
11 | $context = $container->get(['context']);
12 |
13 |
14 | $request = $context->getHttpRequest();
15 |
16 | var_dump($request);
17 |
--------------------------------------------------------------------------------
/packages/demo/data/reuse.php:
--------------------------------------------------------------------------------
1 |
5 |
6 | RewriteEngine On
7 | RewriteBase /
8 |
9 | RewriteRule ^(equal|index|console)\.php(\??.*)$ - [L]
10 |
11 | RewriteCond %{REQUEST_FILENAME} ^(.*)\.php$ [OR]
12 | RewriteCond %{REQUEST_FILENAME} !-f
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteRule . /index.php [L]
15 |
16 |
17 |
--------------------------------------------------------------------------------
/public/assets/css/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/css/.gitkeep
--------------------------------------------------------------------------------
/public/assets/env/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/env/.gitkeep
--------------------------------------------------------------------------------
/public/assets/env/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "production": true,
3 | "parent_domain": "equal.local",
4 | "backend_url": "http://equal.local",
5 | "rest_api_url": "http://equal.local/",
6 | "lang": "en",
7 | "locale": "en",
8 | "company_name": "eQual Framework",
9 | "company_url": "https://yesbabylon.com",
10 | "app_name": "eQual.run",
11 | "app_logo_url": "/assets/img/logo.svg",
12 | "app_settings_root_package": "core",
13 | "version": "1.0",
14 | "license": "AGPL",
15 | "license_url": "https://www.gnu.org/licenses/agpl-3.0.en.html"
16 | }
--------------------------------------------------------------------------------
/public/assets/fonts/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/.gitkeep
--------------------------------------------------------------------------------
/public/assets/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/public/assets/i18n/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/i18n/.gitkeep
--------------------------------------------------------------------------------
/public/assets/img/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/.gitkeep
--------------------------------------------------------------------------------
/public/assets/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/avatar.png
--------------------------------------------------------------------------------
/public/assets/img/equal_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/equal_logo.png
--------------------------------------------------------------------------------
/public/assets/img/equal_presentation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/equal_presentation.gif
--------------------------------------------------------------------------------
/public/assets/img/equal_summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/equal_summary.png
--------------------------------------------------------------------------------
/public/assets/img/equal_symbol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/equal_symbol.png
--------------------------------------------------------------------------------
/public/assets/img/low_resolution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/img/low_resolution.png
--------------------------------------------------------------------------------
/public/assets/js/.kitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/assets/js/.kitkeep
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/equalframework/equal/25cd74e7030fe81a126c37287cf93b6202ced774/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
4 | Some Rights Reserved, The eQual Framework, 2010-2024
5 | Original Author: Cedric Francoys
6 | License: GNU LGPL 3 license
7 | */
8 |
9 | /*
10 | Session config
11 | */
12 | // disable SID and sessions
13 | ini_set('session.use_cookies', '0');
14 | ini_set('session.use_only_cookies', '1');
15 | // make sure not to rewrite URL
16 | ini_set('session.use_trans_sid', '0');
17 | ini_set('url_rewriter.tags', '');
18 |
19 | /*
20 | URI sanitization
21 | */
22 | // handle the '_escaped_fragment_' parameter to support requests made by crawlers
23 | if(isset($_REQUEST['_escaped_fragment_'])) {
24 | $uri = $_REQUEST['_escaped_fragment_'];
25 | header('Status: 200 OK');
26 | header('Location: '.$uri);
27 | exit();
28 | }
29 |
30 | /*
31 | Request handling
32 | */
33 |
34 | // #debug - for debugging, uncomment this to force the header of generated HTTP response
35 | /*
36 | header("HTTP/1.1 200 OK");
37 | header('Content-type: application/json; charset=UTF-8');
38 | header('Access-Control-Allow-Origin: *');
39 | header('Access-Control-Allow-Methods: GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD,TRACE');
40 | header('Access-Control-Allow-Headers: *');
41 | header('Access-Control-Expose-Headers: *');
42 | header('Allow: *');
43 | flush();
44 | */
45 |
46 | // parse requested operation and relay result to php://stdout
47 | include('../run.php');
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-Agent: *
2 | Disallow: /
--------------------------------------------------------------------------------