mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-12 13:18:44 +02:00
Compare commits
34 Commits
faf/quick_
...
feature/88
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b80aa236f2 | ||
|
|
6226ac8746 | ||
|
|
e661e0bdbb | ||
|
|
1d52665012 | ||
|
|
4aa0c19183 | ||
|
|
809d4cd665 | ||
|
|
0c3bc7f35b | ||
|
|
778c16da86 | ||
|
|
981d5c6263 | ||
|
|
4ed21dc21a | ||
|
|
1f4a2f0f56 | ||
|
|
bf7a756714 | ||
|
|
428d2c6356 | ||
|
|
8982f7e0e3 | ||
|
|
bb8a09d8e2 | ||
|
|
901f8f2a7b | ||
|
|
ba6fff801b | ||
|
|
50098bad73 | ||
|
|
65c9145b10 | ||
|
|
437296eab9 | ||
|
|
7cf6f65265 | ||
|
|
491f55c7bd | ||
|
|
7b44ec23a1 | ||
|
|
f00b8d529c | ||
|
|
af44ffd0ad | ||
|
|
c63e01e27b | ||
|
|
1438006861 | ||
|
|
700470dd29 | ||
|
|
497fc4978a | ||
|
|
6826ab509d | ||
|
|
41194ce9ab | ||
|
|
0e5bece5b6 | ||
|
|
e987ea72bc | ||
|
|
c8371f1c19 |
@@ -1,99 +0,0 @@
|
||||
# Phpdoc dokuwiki template
|
||||
This directory contains a template for rendering iTop phpdoc as dokuwiki pages.
|
||||
|
||||
|
||||
Conventional tags that you should use:
|
||||
* `@internal` : exclude from the documentation.
|
||||
* `@api` : it means that a method is an api, thus it may be interacted with.
|
||||
* `@see` : it points to another documented method
|
||||
* `@link` : external url
|
||||
* if you point to another page of the wiki, please use relative links.
|
||||
* `@example` : let you provide example of code
|
||||
* `@param`, `@return`, `@throws`, ...
|
||||
|
||||
|
||||
## Special instructions
|
||||
|
||||
Some iTop specific tags were added :
|
||||
* `@api-advanced`: it means that a method is an `@api` but mark it also as "complex" to use
|
||||
* `@overwritable-hook`: used to mark a method as "designed to be extended"
|
||||
* `@extension-hook`: not used for now
|
||||
* `@phpdoc-tuning-exclude-inherited`: once this tag is present on a class, it's inherited methods won't be showed.
|
||||
|
||||
|
||||
### known limitations:
|
||||
#### `@see` tags must be very specific:
|
||||
* always prefix class members (attributes or methods) with `ClassName::` (do not use self)
|
||||
* for methods always suffix them with `()`,
|
||||
* do not reference variables since they are not documented. If you have to, always prefix them with `$`
|
||||
|
||||
examples:
|
||||
```
|
||||
/**
|
||||
* @see DBObject
|
||||
* @see DBObject::Get()
|
||||
* @see DBObject::$foo
|
||||
*/
|
||||
```
|
||||
|
||||
#### Do not use inline tags, they do not work properly, example:
|
||||
```
|
||||
/**
|
||||
* This is a texts with an inline tag {@see [FQSEN] [<description>]} it must never be used
|
||||
*/
|
||||
```
|
||||
|
||||
#### The `@example` tag must respect this very precise syntax
|
||||
* the sentence in the first line (next to the tag) is the title, it must be enclosed by double quotes
|
||||
* the following lines are the sample code.
|
||||
* 💔 since we simply hack the official tag, this syntax must be respected carefully 💔
|
||||
example:
|
||||
```
|
||||
/**
|
||||
* @example "This is the title of the multiline example"
|
||||
* $foo = DBObject::Get('foo');
|
||||
* DBObject::Set('foo', ++$foo);
|
||||
*/
|
||||
```
|
||||
|
||||
## How content is included into the documentation
|
||||
|
||||
**For a class** those requirements have to be respected:
|
||||
- the file containing the class must be listed in `/phpdoc/files/file[]` of `.doc/phpdoc-objects-manipulation.dist.xml`
|
||||
- the class **must not** have the tag `@internal`
|
||||
- the class **must** have at least one of: `@api`, `@api-advanced`, `@overwritable-hook`, `@extension-hook`
|
||||
|
||||
Then, **for a method** of an eligible class:
|
||||
- **public** methods **must** have at least one of: `@api`, `@api-advanced`, `@overwritable-hook`, `@extension-hook`
|
||||
- **protected** methods **must** have at least one of: `@overwritable-hook`, `@extension-hook`
|
||||
- **private** methods are **always excluded**
|
||||
|
||||
**Class properties** and **constants** are never documented (this is subject to change).
|
||||
|
||||
|
||||
|
||||
|
||||
## A note about the rendering engine
|
||||
|
||||
:notebook: as spaces are used to mark code, the templates (`.doc/phpdoc-templates/combodo-wiki/*`) have very few indentation, thus they are awful to read (sorry).
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
cd .doc
|
||||
composer require phpdocumentor/phpdocumentor:~2 --dev
|
||||
```
|
||||
|
||||
## Generation
|
||||
|
||||
1. Switch to this directory : `cd /path/to/itop/.doc`
|
||||
2. `composer install`
|
||||
3. `./bin/build-doc-object-manipulation`
|
||||
3. `./bin/build-doc-extensions`
|
||||
4. Get the generated files from `/path/to/itop/data/phpdocumentor/output`
|
||||
|
||||
## Dokuwiki requirements
|
||||
* the template uses the [wrap plugin](https://www.dokuwiki.org/plugin:wrap).
|
||||
* the generated files have to be placed under an arbitrary directory of `[/path/to/dokuwiki]/data/pages`.
|
||||
* the html has to be activated [config:htmlok](https://www.dokuwiki.org/config:htmlok)
|
||||
* the generated files have to be in lowercase
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
rm -rf /tmp/phpdoc-twig-cache/ && rm -rf data/phpdocumentor/output/extensions/ && rm -rf data/phpdocumentor/temp/extensions/ && ./vendor/bin/phpdoc -c ./phpdoc-extensions.dist.xml -vvv
|
||||
|
||||
# now wee need to lowercase every generated file because dokuwiki can't handle uppercase
|
||||
cd ../data/phpdocumentor/output/extensions/ && for i in $(ls | grep [A-Z]); do mv -i $i $(echo $i | tr 'A-Z' 'a-z'); done
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
rm -rf /tmp/phpdoc-twig-cache/ && rm -rf ../data/phpdocumentor/output/objects-manipulation/ && rm -rf ../data/phpdocumentor/temp/objects-manipulation/ && ./vendor/bin/phpdoc -c ./phpdoc-objects-manipulation.dist.xml -vvv
|
||||
|
||||
|
||||
# now wee need to lowercase every generated file because dokuwiki can't handle uppercase
|
||||
cd ../data/phpdocumentor/output/objects-manipulation/ && for i in $( ls | grep [A-Z] ); do mv -i $i `echo $i | tr 'A-Z' 'a-z'`; done
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"require-dev": {
|
||||
"phpdocumentor/phpdocumentor": "~2",
|
||||
"jms/serializer": "1.7.*"
|
||||
}
|
||||
}
|
||||
3015
.doc/composer.lock
generated
3015
.doc/composer.lock
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 983 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.8 MiB |
@@ -1,104 +0,0 @@
|
||||
# iTop version history
|
||||
|
||||
```mermaid
|
||||
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'themeVariables': {
|
||||
'git0': 'lawngreen',
|
||||
'git3': 'dodgerblue',
|
||||
'git4': 'grey',
|
||||
'git5': 'grey',
|
||||
'git6': 'grey',
|
||||
'git7': 'grey'
|
||||
}, 'gitGraph': {'showBranches': true,'mainBranchName': 'develop','rotateCommitLabel': true}} }%%
|
||||
gitGraph
|
||||
commit id: "2016-07-06" tag: "2.3.0" type: HIGHLIGHT
|
||||
branch support/2.3 order: 900
|
||||
commit id: "2016-07-08" tag: "2.3.1"
|
||||
commit id: "2016-12-22" tag: "2.3.3"
|
||||
commit id: "2017-04-14" tag: "2.3.4"
|
||||
checkout develop
|
||||
commit id: "2017-07-12" tag: "2.4.0-beta" type: REVERSE
|
||||
commit id: "2017-11-16" tag: "2.4.0" type: HIGHLIGHT
|
||||
branch support/2.4 order: 890
|
||||
commit id: "2018-02-14" tag: "2.4.1"
|
||||
checkout develop
|
||||
commit id: "2018-04-25" tag: "2.5.0-beta" type: REVERSE
|
||||
checkout support/2.4
|
||||
commit id: "2018-06-14" tag: "2.4.2"
|
||||
checkout develop
|
||||
commit id: "2018-06-27" tag: "2.5.0" type: HIGHLIGHT
|
||||
branch support/2.5 order: 880
|
||||
checkout develop
|
||||
commit id: "2019-01-09" tag: "2.6.0" type: HIGHLIGHT
|
||||
branch support/2.6 order: 870
|
||||
commit id: "2019-03-28" tag: "2.6.1"
|
||||
checkout develop
|
||||
commit id: "2019-12-18" tag: "2.7.0-beta" type: REVERSE
|
||||
checkout support/2.5
|
||||
commit id: "2020-01-22" tag: "2.5.4"
|
||||
checkout support/2.6
|
||||
commit id: "2020-01-23" tag: "2.6.3"
|
||||
checkout develop
|
||||
commit id: "2020-01-29" tag: "2.7.0-beta2" type: REVERSE
|
||||
commit id: "2020-04-01" tag: "2.7.0-1" type: HIGHLIGHT
|
||||
checkout support/2.6
|
||||
commit id: "2020-04-22" tag: "2.6.4"
|
||||
checkout develop
|
||||
branch support/2.7 order: 860
|
||||
commit id: "2020-06-26" tag: "2.7.1"
|
||||
checkout support/2.7
|
||||
commit id: "2020-12-09" tag: "2.7.3"
|
||||
commit id: "2021-03-31" tag: "2.7.4"
|
||||
checkout develop
|
||||
commit id: "2021-04-06" tag: "3.0.0-beta" type: REVERSE
|
||||
checkout support/2.7
|
||||
commit id: "2021-07-05" tag: "2.7.5"
|
||||
checkout develop
|
||||
commit id: "2021-07-05." tag: "3.0.0-beta2" type: REVERSE
|
||||
checkout support/2.7
|
||||
commit id: "2021-12-17" tag: "2.7.6"
|
||||
checkout develop
|
||||
commit id: "2022-01-04" tag: "3.0.0" type: HIGHLIGHT
|
||||
branch support/3.0 order: 850
|
||||
commit id: "2022-04-08" tag: "3.0.1"
|
||||
checkout support/2.7
|
||||
commit id: "2022-07-11" tag: "2.7.7"
|
||||
checkout support/3.0
|
||||
commit id: "2022-09-12" tag: "3.0.2-1"
|
||||
checkout develop
|
||||
checkout support/2.7
|
||||
commit id: "2022-12-28" tag: "2.7.8"
|
||||
checkout support/3.0
|
||||
commit id: "2023-04-12" tag: "3.0.3"
|
||||
checkout develop
|
||||
commit id: "2023-06-19" tag: "3.1.0-beta" type: REVERSE
|
||||
commit id: "2023-07-26" tag: "3.1.0-1" type: HIGHLIGHT
|
||||
branch support/3.1 order: 840
|
||||
checkout support/3.1
|
||||
commit id: "2023-08-09" tag: "3.1.0-2"
|
||||
checkout support/2.7
|
||||
commit id: "2023-08-10" tag: "2.7.9"
|
||||
checkout support/3.1
|
||||
commit id: "2023-12-20" tag: "3.1.1"
|
||||
checkout develop
|
||||
commit id: "2024-01-15" tag: "Start 3.2" type: HIGHLIGHT
|
||||
branch support/3.2 order: 830
|
||||
checkout support/2.7
|
||||
commit id: "2024-01-17a" tag: "2.7.10"
|
||||
checkout support/3.0
|
||||
commit id: "2024-01-17b" tag: "3.0.4"
|
||||
checkout support/2.7
|
||||
commit id: "2024-09-28" tag: "2.7.11"
|
||||
checkout support/3.1
|
||||
commit id: "2024-09-27" tag: "3.1.2"
|
||||
checkout support/3.2
|
||||
commit id: "2024-06-25" tag: "3.2.0-beta1" type: REVERSE
|
||||
commit id: "2024-08-07" tag: "3.2.0"
|
||||
checkout support/2.7
|
||||
commit id: "2025-02-25" tag: "2.7.12"
|
||||
checkout support/3.1
|
||||
commit id: "2025-02-25 " tag: "3.1.3"
|
||||
checkout support/3.2
|
||||
commit id: "2025-02-25 " tag: "3.2.1"
|
||||
```
|
||||
|
||||
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<phpdoc>
|
||||
<title><![CDATA[iTop extensions]]></title>
|
||||
|
||||
<parser>
|
||||
<target>../data/phpdocumentor/temp/extensions</target>
|
||||
</parser>
|
||||
|
||||
<transformer>
|
||||
<target>../data/phpdocumentor/output/extensions</target>
|
||||
</transformer>
|
||||
|
||||
<transformations>
|
||||
<template name="phpdoc-templates/combodo-wiki"/>
|
||||
</transformations>
|
||||
|
||||
<files>
|
||||
<file>../application/applicationextension.inc.php</file>
|
||||
</files>
|
||||
</phpdoc>
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<phpdoc>
|
||||
|
||||
<!--
|
||||
/**
|
||||
The documentation of this file can be found here : https://docs.phpdoc.org/references/configuration.html
|
||||
it has to be completed by the CLI parameters documentation which is more comprehensive: https://docs.phpdoc.org/references/commands/project_run.html#usage
|
||||
|
||||
usage:
|
||||
vendor/bin/phpdoc -c phpdoc-objects-manipulation.dist.xml
|
||||
|
||||
*/
|
||||
-->
|
||||
|
||||
<title><![CDATA[iTop's objects manipulation API]]></title>
|
||||
|
||||
<parser>
|
||||
<default-package-name>iTopORM</default-package-name>
|
||||
<target>../data/phpdocumentor/temp/objects-manipulation</target>
|
||||
<visibility>public,protected</visibility>
|
||||
<markers>
|
||||
<!--<item>TODO</item>-->
|
||||
<!--<item>FIXME</item>-->
|
||||
</markers>
|
||||
<extensions>
|
||||
<extension>php</extension>
|
||||
</extensions>
|
||||
</parser>
|
||||
|
||||
<transformer>
|
||||
<target>../data/phpdocumentor/output/objects-manipulation</target>
|
||||
</transformer>
|
||||
|
||||
<transformations>
|
||||
<template name="phpdoc-templates/combodo-wiki"/>
|
||||
</transformations>
|
||||
|
||||
<!--<logging>-->
|
||||
<!--<level>warn</level>-->
|
||||
<!--<paths>-->
|
||||
<!--<!–<default>data/phpdocumentor/log/objects-manipulation/{DATE}.log</default>–>-->
|
||||
<!--<!–<errors>data/phpdocumentor/log/objects-manipulation/{DATE}.errors.log</errors>–>-->
|
||||
|
||||
<!--<default>{APP_ROOT}/data/log/{DATE}.log</default>-->
|
||||
<!--<errors>{APP_ROOT}/data/log/{DATE}.errors.log</errors>-->
|
||||
<!--</paths>-->
|
||||
<!--</logging>-->
|
||||
|
||||
<files>
|
||||
<file>../core/dbobject.class.php</file>
|
||||
<file>../core/dbobjectsearch.class.php</file>
|
||||
<file>../core/metamodel.class.php</file>
|
||||
<file>../core/dbobjectset.class.php</file>
|
||||
<file>../core/dbsearch.class.php</file>
|
||||
<file>../core/dbunionsearch.class.php</file>
|
||||
</files>
|
||||
|
||||
</phpdoc>
|
||||
@@ -1,136 +0,0 @@
|
||||
{% extends 'layout.txt.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<wrap button>[[start|🔙 Back]]</wrap>
|
||||
|
||||
{% if node.tags['internal'] is defined %}
|
||||
====== {{ node.name }} ======
|
||||
<WRAP alert>This class is "internal", and thus is not documented!</WRAP>
|
||||
{% elseif node.tags['api'] is not defined and node.tags['api-advanced'] is not defined and node.tags['overwritable-hook'] is not defined and node.tags['extension-hook'] is not defined %}
|
||||
====== {{ node.name }} ======
|
||||
<WRAP alert>This class is neither "api", "api-advanced", "overwritable-hook" or "extension-hook", and thus is not documented!</WRAP>
|
||||
{% else %}
|
||||
|
||||
====== {{ node.name }} ======
|
||||
|
||||
{% if node.deprecated %}<wrap danger>deprecated</wrap>{% endif %}
|
||||
{% if node.abstract %}<wrap warning>abstract</wrap>{% endif %}
|
||||
{% if node.final %}<wrap notice>final</wrap>{% endif %}
|
||||
{% include 'includes/wrap-tags.txt.twig' with {structure:node, wrap: 'safety', wrapTags: ['api', 'api-advanced', 'overwritable-hook', 'extension-hook']} %}
|
||||
|
||||
|
||||
|
||||
{% if node.deprecated %}
|
||||
=== **<del>Deprecated</del>**===
|
||||
//{{ node.tags.deprecated[0].description }}//
|
||||
{% endif %}
|
||||
|
||||
|
||||
== {{ node.summary|replace({"\n":""})|raw }} ==
|
||||
<html>{{ node.description|markdown|raw }}</html>
|
||||
|
||||
|
||||
{% include 'includes/code-examples.txt.twig' with {structure:node, title_level: '====='} %}
|
||||
|
||||
|
||||
{% set class = node.parent %}
|
||||
{% block hierarchy_element %}
|
||||
|
||||
{% if class and class.name is defined and class.name|trim != '' %}
|
||||
==== parent ====
|
||||
{% set child = class %}
|
||||
{% set class = class.parent %}
|
||||
{{ block('hierarchy_element') }}
|
||||
[[{{ child.name }}|{{ child.name }}]]
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% for interface in node.interfaces|sort_asc %}
|
||||
{% if loop.first %}
|
||||
==== Implements ====
|
||||
{% endif %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ interface.fullyQualifiedStructuralElementName ?: interface }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% for trait in node.usedTraits|sort_asc %}
|
||||
{% if loop.first %}
|
||||
==== Uses traits ====
|
||||
{% endif %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ trait.fullyQualifiedStructuralElementName ?: trait }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% include 'includes/see-also.txt.twig' with {structure:node, title_level: '==='} %}
|
||||
|
||||
{% include 'includes/tags.txt.twig' with {structure:node, title_level: '=====', blacklist: ['link', 'see', 'abstract', 'example', 'method', 'property', 'property-read', 'property-write', 'package', 'subpackage', 'phpdoc-tuning-exclude-inherited', 'api', 'api-advanced', 'overwritable-hook', 'extension-hook', 'copyright', 'license', 'code-example']} %}
|
||||
|
||||
{% set methods = node.inheritedMethods.merge(node.methods.merge(node.magicMethods)) %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'api'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'api-advanced'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'overwritable-hook'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'extension-hook'} %}
|
||||
|
||||
|
||||
{% include 'includes/code-examples.txt.twig' with {structure:node, title_level: '=====', sub_title_level: '=='} %}
|
||||
|
||||
<WRAP clear />
|
||||
|
||||
{% for method in methods|sort_asc
|
||||
if method.visibility == 'public'
|
||||
and (
|
||||
method.tags['api'] is defined
|
||||
or method.tags['api-advanced'] is defined
|
||||
or method.tags['overwritable-hook'] is defined
|
||||
or method.tags['extension-hook'] is defined
|
||||
)
|
||||
and (
|
||||
node.tags['phpdoc-tuning-exclude-inherited'] is not defined
|
||||
or method.parent.name == node.name
|
||||
)
|
||||
%}
|
||||
{%- if loop.first %}
|
||||
===== Public methods =====
|
||||
{% endif %}
|
||||
{{ block('method') }}
|
||||
{% endfor %}
|
||||
{% for method in methods|sort_asc if method.visibility == 'protected' and (method.tags['overwritable-hook'] is defined or method.tags['extension-hook'] is defined) %}
|
||||
{%- if loop.first %}
|
||||
===== Protected methods =====
|
||||
{% endif %}
|
||||
{{ block('method') }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% set constants = node.inheritedConstants.merge(node.constants) %}
|
||||
{% if constants|length > 0 %}
|
||||
===== Constants =====
|
||||
{% for constant in constants|sort_asc %}
|
||||
{{ block('constant') }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{#{% set properties = node.inheritedProperties.merge(node.properties.merge(node.magicProperties)) %}#}
|
||||
{#{% for property in properties|sort_asc if property.visibility == 'public' %}#}
|
||||
{#{%- if loop.first %}#}
|
||||
{#===== Public properties =====#}
|
||||
{#{% endif %}#}
|
||||
{#{{ block('property') }}#}
|
||||
{#{% endfor %}#}
|
||||
{#{% for property in properties|sort_asc if property.visibility == 'protected' %}#}
|
||||
{#{%- if loop.first %}#}
|
||||
{#===== Protected properties =====#}
|
||||
{#{% endif %}#}
|
||||
{#{{ block('property') }}#}
|
||||
{#{% endfor %}#}
|
||||
|
||||
|
||||
{%- endif %} {#{% elseif node.tags['xxx'] is not defined and ... #}
|
||||
|
||||
<wrap button>[[start|🔙 Back]]</wrap>
|
||||
{% endblock %}
|
||||
@@ -1,31 +0,0 @@
|
||||
{% block constant %}
|
||||
|
||||
<WRAP group box >
|
||||
<WRAP twothirds column >
|
||||
==== {{ constant.name }} ====
|
||||
</WRAP>{# twothirds column#}
|
||||
|
||||
<WRAP third column>
|
||||
{% if constant.deprecated %}<wrap danger>deprecated</wrap> {% endif %}
|
||||
{% if (node.parent is not null and constant.parent.fullyQualifiedStructuralElementName != node.fullyQualifiedStructuralElementName) %}<wrap notice>inherited</wrap> {% endif %}
|
||||
</WRAP>{# third column#}
|
||||
|
||||
== {{ constant.summary|replace({"\n":""})|raw }} ==
|
||||
<html>{{ constant.description|markdown|raw }}</html>
|
||||
|
||||
{% if constant.deprecated %}
|
||||
=== Deprecated ===
|
||||
{{ constant.tags.deprecated[0].description|raw }}
|
||||
{% endif %}
|
||||
|
||||
{% include 'includes/inherited-from.txt.twig' with {structure:constant} %}
|
||||
|
||||
{% include 'includes/see-also.txt.twig' with {structure:constant, title_level: '=='} %}
|
||||
|
||||
{% include 'includes/uses.txt.twig' with {structure:constant, title_level: '=='} %}
|
||||
|
||||
{% include 'includes/tags.txt.twig' with {structure:constant, title_level: '==', blacklist: ['link', 'see', 'var', 'deprecated', 'uses', 'package', 'subpackage', 'todo', 'code-example']} %}
|
||||
|
||||
</WRAP>{# group #}
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,95 +0,0 @@
|
||||
{% block method %}
|
||||
|
||||
|
||||
<WRAP group box >
|
||||
<WRAP twothirds column >
|
||||
==== {{ method.name }} ====
|
||||
</WRAP>{# twothirds column#}
|
||||
<WRAP third column >
|
||||
{% include 'includes/wrap-tags.txt.twig' with {structure:method, wrap: 'safety', wrapTags: ['api', 'api-advanced', 'overwritable-hook', 'extension-hook']} %}
|
||||
{% if method.deprecated %}<wrap danger>deprecated</wrap> {% endif %}
|
||||
{% if (node.parent is not null and method.parent.fullyQualifiedStructuralElementName != node.fullyQualifiedStructuralElementName) %}<wrap notice>inherited</wrap> {% endif %}
|
||||
{% if method.abstract %}<wrap warning>abstract</wrap> {% endif %}
|
||||
{% if method.final %}<wrap notice>final</wrap> {% endif %}
|
||||
<wrap notice>{{ method.visibility }}</wrap>
|
||||
{% if method.static %}<wrap warning>static</wrap> {% endif %}
|
||||
</WRAP>{# third column#}
|
||||
|
||||
|
||||
== {{ method.summary|replace({"\n":""})|raw }} ==
|
||||
<html>{{ method.description|markdown|raw }}</html>
|
||||
|
||||
<code php>{% if method.abstract %}abstract {% endif %}{% if method.final %}final {% endif %}{{ method.visibility }} {% if method.static %}static {% endif %}{{ method.name }}({% for argument in method.arguments %}{{ argument.isVariadic ? '...' }}{{ argument.name }}{{ argument.default ? (' = '~argument.default)|raw }}{% if not loop.last %}, {% endif %}{% endfor %})</code>
|
||||
|
||||
<WRAP twothirds column >
|
||||
|
||||
|
||||
=== Parameters ===
|
||||
{% if method.arguments|length > 0 -%}
|
||||
^ types ^ name ^ default ^ description ^
|
||||
{% for argument in method.arguments -%}
|
||||
| **<nowiki>{{ argument.types|join('|')|raw }}</nowiki>** | {{ argument.name }} {{ argument.isVariadic ? '<small style="color: gray">variadic</small>' }} | <nowiki>{{ argument.default|raw }}</nowiki> | {{ argument.description|trim|replace("\n", ' ')|raw }} |{{ "\r\n" }}
|
||||
{%- endfor %}
|
||||
{% else %}
|
||||
//none//
|
||||
{% endif %}
|
||||
|
||||
|
||||
{#=== Parameters ===#}
|
||||
{#{% if method.arguments|length > 0 -%}#}
|
||||
{#{% for argument in method.arguments -%}#}
|
||||
{#== {{ argument.name }} ==#}
|
||||
|
||||
|
||||
{#{% set varDesc %}#}
|
||||
{#<span style="margin:0 10px; 0 20px; font-weight: bold;">{{ argument.types|join('|') }}</span>#}
|
||||
{#{{ argument.isVariadic ? '<small style="color: gray">variadic</small>' }}#}
|
||||
{#{{ argument.description|raw }}#}
|
||||
{#{% endset %}#}
|
||||
{#<html>{{ varDesc|markdown|raw }}</html>#}
|
||||
{#{%- endfor %}#}
|
||||
{#{% else %}#}
|
||||
{#<wrap tip>This method has no parameter</wrap>#}
|
||||
{#{% endif %}#}
|
||||
|
||||
|
||||
{% if method.response and method.response.types|join() != 'void' %}
|
||||
=== Returns ===
|
||||
<html>{{ ('**' ~ method.response.types|join('|')|trim ~ '** ' ~ method.response.description)|markdown|raw }}</html>
|
||||
{% endif %}
|
||||
|
||||
</WRAP>{# twothirds column#}
|
||||
|
||||
<WRAP third column >
|
||||
|
||||
{% if method.tags.throws|length > 0 or method.tags.throw|length > 0 %}
|
||||
=== Throws ===
|
||||
{% for exception in method.tags.throws -%}
|
||||
{% if loop.length > 1 %} * {% endif %}''{{ exception.types|join('|')|raw }}'' <nowiki>{{ exception.description|raw }}</nowiki>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% include 'includes/inherited-from.txt.twig' with {structure:method} %}
|
||||
|
||||
{% include 'includes/see-also.txt.twig' with {structure:method, title_level: '==='} %}
|
||||
|
||||
{% include 'includes/uses.txt.twig' with {structure:method, title_level: '==='} %}
|
||||
|
||||
{% include 'includes/used-by.txt.twig' with {structure:method, title_level: '==='} %}
|
||||
|
||||
{% include 'includes/tags-with-description.txt.twig' with {structure:method, title_level: '===', WRAP: 'info', tagsWithDescription: ['api', 'api-advanced', 'overwritable-hook', 'extension-hook']} %}
|
||||
|
||||
{% include 'includes/tags.txt.twig' with {structure:method, title_level: '===', blacklist: ['todo', 'link', 'see', 'abstract', 'example', 'param', 'return', 'access', 'deprecated', 'throws', 'throw', 'uses', 'api', 'api-advanced', 'overwritable-hook', 'extension-hook', 'used-by', 'inheritdoc', 'code-example']} %}
|
||||
|
||||
</WRAP>{# third column#}
|
||||
|
||||
|
||||
|
||||
{% include 'includes/code-examples.txt.twig' with {structure:method, title_level: '==='} %}
|
||||
|
||||
</WRAP>{# group #}
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,49 +0,0 @@
|
||||
{% block property %}
|
||||
|
||||
<WRAP group box>
|
||||
<WRAP twothirds column >
|
||||
==== ${{ property.name }} ====
|
||||
</WRAP>{# twothirds column#}
|
||||
|
||||
<WRAP third column>
|
||||
{% if property.deprecated %}<wrap danger>deprecated</wrap> {% endif %}
|
||||
{% if (node.parent is not null and property.parent.fullyQualifiedStructuralElementName != node.fullyQualifiedStructuralElementName) %}<wrap notice>inherited</wrap> {% endif %}
|
||||
</WRAP>{# third column#}
|
||||
|
||||
|
||||
|
||||
|
||||
== {{ property.summary|replace({"\n":""})|raw }} ==
|
||||
<html>{{ property.description|markdown|raw }}</html>
|
||||
{% if property.var.0.description %}<html>{{ property.var.0.description|markdown|raw }}</html>{% endif %}
|
||||
|
||||
|
||||
|
||||
{#{% if property.types %}#}
|
||||
{#== Type ==#}
|
||||
{#{% for type in property.types %}#}
|
||||
{#{% if loop.length > 1 %} * {% endif %}{{ type|raw }} : {{ type.description|raw }}#}
|
||||
{#{% endfor %}#}
|
||||
{#{{ property.types|join('|')|raw }}#}
|
||||
{#{% endif %}#}
|
||||
|
||||
|
||||
{% if property.deprecated %}
|
||||
== Deprecated ==
|
||||
{{ property.tags.deprecated[0].description }}
|
||||
{% endif %}
|
||||
|
||||
{% include 'includes/inherited-from.txt.twig' with {structure:property} %}
|
||||
|
||||
{% include 'includes/see-also.txt.twig' with {structure:property, title_level: '=='} %}
|
||||
|
||||
{% include 'includes/uses.txt.twig' with {structure:property, title_level: ''} %}
|
||||
|
||||
{% include 'includes/tags.txt.twig' with {structure:property, title_level: '==', blacklist: ['link', 'see', 'access', 'var', 'deprecated', 'uses', 'todo', 'code-example']} %}
|
||||
|
||||
|
||||
<code php>{{ property.visibility }} ${{ property.name }}{% if property.types %} : {{ property.types|join('|')|raw }}{% endif %}</code>
|
||||
|
||||
</WRAP>{# group #}
|
||||
|
||||
{% endblock %}
|
||||
@@ -1 +0,0 @@
|
||||
{{ node.source|raw }}
|
||||
@@ -1,122 +0,0 @@
|
||||
{% extends 'layout.txt.twig' %}
|
||||
|
||||
{% block javascripts %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{#<section class="row-fluid">#}
|
||||
{#<div class="span2 sidebar">#}
|
||||
{#{% set namespace = project.namespace %}#}
|
||||
{#{{ block('sidebarNamespaces') }}#}
|
||||
{#</div>#}
|
||||
{#</section>#}
|
||||
{#<section class="row-fluid">#}
|
||||
====== {{ node.path|split('/')|slice(0,-1)|join('/') }}{{ node.name }} ======
|
||||
{{ node.summary }}
|
||||
<html>{{ node.description|markdown|raw }}</html>
|
||||
|
||||
{% if node.traits|length > 0 %}
|
||||
|
||||
===== Traits =====
|
||||
{% for trait in node.traits %}
|
||||
<tr>
|
||||
<td>{{ trait|raw }}</td>
|
||||
<td><em>{{ trait.summary }}</em></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if node.interfaces|length > 0 %}
|
||||
===== Interfaces =====
|
||||
{% for interface in node.interfaces %}
|
||||
<tr>
|
||||
<td>{{ interface|raw }}</td>
|
||||
<td><em>{{ interface.summary }}</em></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if node.classes|length > 0 %}
|
||||
===== Classes =====
|
||||
{% for class in node.classes %}
|
||||
{{ class|raw }}
|
||||
<em>{{ class.summary }}</em>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if node.package is not empty and node.package != '\\' %}
|
||||
===== Package =====
|
||||
{{ node.subpackage ? (node.package ~ '\\' ~ node.subpackage) : node.package }}
|
||||
{% endif %}
|
||||
|
||||
{% for tagName,tags in node.tags if tagName in ['link', 'see'] %}
|
||||
{% if loop.first %}
|
||||
===== See also =====
|
||||
{% endif %}
|
||||
{% for tag in tags %}
|
||||
<dd><a href="{{ tag.reference ?: tag.link }}"><div class="namespace-wrapper">{{ tag.description ?: tag.reference }}</div></a></dd>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
<h2>Tags</h2>
|
||||
<table class="table table-condensed">
|
||||
{% for tagName,tags in node.tags if tagName not in ['link', 'see', 'package', 'subpackage'] %}
|
||||
<tr>
|
||||
<th>
|
||||
{{ tagName }}
|
||||
</th>
|
||||
<td>
|
||||
{% for tag in tags %}
|
||||
{{ tag.description|markdown|raw }}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="2"><em>None found</em></td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
{% if node.constants|length > 0 %}
|
||||
<div class="row-fluid">
|
||||
<section class="span8 content file">
|
||||
<h2>Constants</h2>
|
||||
</section>
|
||||
<aside class="span4 detailsbar"></aside>
|
||||
</div>
|
||||
|
||||
{% for constant in node.constants %}
|
||||
{{ block('constant') }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if node.functions|length > 0 %}
|
||||
<div class="row-fluid">
|
||||
<section class="span8 content file">
|
||||
<h2>Functions</h2>
|
||||
</section>
|
||||
<aside class="span4 detailsbar"></aside>
|
||||
</div>
|
||||
|
||||
{% for method in node.functions %}
|
||||
{{ block('method') }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="source-view" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="source-view-label" aria-hidden="true">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 id="source-view-label">{{ node.file.name }}</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<pre data-src="{{ path('files/' ~ node.path ~ '.txt')|raw }}" class="language-php line-numbers"></pre>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -1,42 +0,0 @@
|
||||
{% extends 'layout.html.twig' %}
|
||||
|
||||
{% block stylesheets %}
|
||||
<link href="{{ path('css/jquery.iviewer.css') }}" rel="stylesheet" media="all"/>
|
||||
<style>
|
||||
#viewer {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
.wrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
<script src="{{ path('js/jquery.mousewheel.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ path('js/jquery.iviewer.js') }}" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
$(window).resize(function(){
|
||||
$("#viewer").height($(window).height() - 100);
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#viewer").iviewer({src: '{{ path('graphs/classes.svg') }}', zoom_animation: false});
|
||||
$('#viewer img').bind('dragstart', function(event){
|
||||
event.preventDefault();
|
||||
});
|
||||
$(window).resize();
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div class="wrapper">
|
||||
<div id="viewer" class="viewer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -1,5 +0,0 @@
|
||||
# Fixes a vulnerability in CentOS: http://stackoverflow.com/questions/20533279/prevent-php-from-parsing-non-php-files-such-as-somefile-php-txt
|
||||
<FilesMatch \.php\.txt$>
|
||||
RemoveHandler .php
|
||||
ForceType text/plain
|
||||
</FilesMatch>
|
||||
@@ -1,34 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{%- set title_level = '==' -%}
|
||||
{% endif %}
|
||||
|
||||
{% if sub_title_level is not defined %}
|
||||
{%- set sub_title_level = title_level|slice(1) -%}
|
||||
{% endif %}
|
||||
{% if sub_title_level == '=' %}
|
||||
{%- set sub_title_level = '' -%}
|
||||
{% endif %}
|
||||
|
||||
{#{% for tagName,tags in structure.tags if tagName in ['code-example'] %}#}
|
||||
{#{% if loop.first %}#}
|
||||
{#{{title_level}} Examples {{title_level}}#}
|
||||
{#{% endif %}#}
|
||||
{#{% for tag in tags %}#}
|
||||
{#{%- set descToken = tag.description|split("\n", 2) -%}#}
|
||||
{#{%- set title = descToken[0] -%}#}
|
||||
{#{%- set code = descToken[1] -%}#}
|
||||
{#{{sub_title_level}} {{ title }} {{sub_title_level}}#}
|
||||
{#<code php>{{ code|raw }}</code>#}
|
||||
{#{% endfor %}#}
|
||||
{#{% endfor %}#}
|
||||
|
||||
|
||||
{% for tagName,tags in structure.tags if tagName in ['example'] %}
|
||||
{% if loop.first %}
|
||||
{{title_level}} Examples {{title_level}}
|
||||
{% endif %}
|
||||
{% for tag in tags %}
|
||||
{{ sub_title_level }} {{ tag.filePath|escape }}{{ sub_title_level }}
|
||||
<code php>{{ tag.description|raw }}</code>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
@@ -1,12 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{% set title_level='' %}
|
||||
{% endif %}
|
||||
|
||||
{% if (node.parent is null) %}
|
||||
{{title_level}} File {{ structure.path }} {{title_level}}
|
||||
{% endif %}
|
||||
|
||||
{% if (node.parent is not null and structure.parent.fullyQualifiedStructuralElementName != node.fullyQualifiedStructuralElementName) %}
|
||||
{{title_level}} Inherited from {{title_level}}
|
||||
[[{{structure.parent}}|{{structure.parent}}]]
|
||||
{% endif %}
|
||||
@@ -1,26 +0,0 @@
|
||||
{% for structure in structures|sort_asc if structure.tags['internal'] is not defined and (structure.tags['api'] is defined or structure.tags['api-advanced'] is defined or structure.tags['overwritable-hook'] is defined or structure.tags['extension-hook'] is defined ) %}
|
||||
{#{{ structure|raw }}#}
|
||||
|
||||
{% set structureName = structure|trim('\\', 'left') %}
|
||||
|
||||
<WRAP group box>
|
||||
<WRAP twothirds column >
|
||||
==== {{ structureName }} ====
|
||||
</WRAP>{# twothirds column#}
|
||||
|
||||
<WRAP third column>
|
||||
{% if structure.deprecated %}<wrap danger>deprecated</wrap>{% endif %}
|
||||
{% if structure.abstract %}<wrap warning>abstract</wrap>{% endif %}
|
||||
{% if structure.final %}<wrap notice>final</wrap>{% endif %}
|
||||
{% if (node.parent is not null and structure.parent.fullyQualifiedStructuralElementName != node.fullyQualifiedStructuralElementName) %}<wrap notice>inherited</wrap> {% endif %}
|
||||
{% include 'includes/wrap-tags.txt.twig' with {structure:structure, wrap: 'safety', wrapTags: ['api', 'api-advanced', 'overwritable-hook', 'extension-hook']} %}
|
||||
</WRAP>{# third column#}
|
||||
|
||||
|
||||
{{ structure.summary|raw }}
|
||||
[[{{structureName}}|More information]]
|
||||
|
||||
</WRAP>{# group #}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{%- set title_level='==' -%}
|
||||
{% endif %}
|
||||
{% for tagName,tags in structure.tags if tagName in ['link', 'see'] %}
|
||||
{% if loop.first %}
|
||||
{{title_level}} See also {{title_level}}
|
||||
{% endif %}
|
||||
{% for tag in tags %}
|
||||
{%- set linkTag = tag.reference|trim('\\', 'left') -%}
|
||||
{% if not('()' in linkTag or '$' in linkTag or node.name in linkTag or '::' in linkTag ) %}
|
||||
{%- set linkTag = linkTag|lower -%}
|
||||
{% elseif node.name~'::' in linkTag %}
|
||||
{%- set linkTag = linkTag|replace({(node.name~'::'): '#'})|lower -%}
|
||||
{% elseif '::' in linkTag -%}
|
||||
{%- set linkTag = linkTag|replace({'::': '#'})|lower -%}
|
||||
{% else %}
|
||||
{%- set linkTag = '#' ~ linkTag|lower -%}
|
||||
{%- endif %}
|
||||
|
||||
{% if loop.length > 1 %} * {% endif %}{% if tag.reference is not empty -%}
|
||||
[[{{linkTag}}|{{ (tag.reference)|trim('\\', 'left') }}]] {% if tag.description|trim is not empty %}: {{ tag.description|trim('\\', 'left') }} {% endif %}
|
||||
{%- else -%}
|
||||
{#{{ tag.description|trim('\\', 'left') }}#}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
@@ -1,56 +0,0 @@
|
||||
{% if tag is not defined -%}
|
||||
{# Do not display @api if @api-advanced is also present #}
|
||||
{%- set tag = "api" -%}
|
||||
{%- endif %}
|
||||
|
||||
{% if hidden_by is not defined -%}
|
||||
{# Do not display @api if @api-advanced is also present #}
|
||||
{%- set hidden_by = {"api" : "api-advanced"} -%}
|
||||
{%- endif %}
|
||||
|
||||
|
||||
|
||||
{% for method in methods|sort_asc
|
||||
if (method.visibility == 'public')
|
||||
and (
|
||||
method.tags[tag] is defined
|
||||
and (
|
||||
hidden_by[tag] is not defined or method.tags[hidden_by[tag]] is not defined
|
||||
)
|
||||
)
|
||||
%}
|
||||
{%- if loop.first %}
|
||||
{% if tag == 'api' %}
|
||||
===== API synthesis =====
|
||||
<WRAP>
|
||||
List of the public API methods.
|
||||
When manipulating {{ node.name }}, You can call those methods:
|
||||
</WRAP>
|
||||
{% elseif tag == 'api-advanced' %}
|
||||
===== Advanced API synthesis =====
|
||||
<WRAP>
|
||||
List of advanced API methods
|
||||
Beware they usage is recommended to advanced users only.
|
||||
</WRAP>
|
||||
{% elseif tag == 'overwritable-hook' %}
|
||||
===== overwritable-hook synthesis =====
|
||||
<WRAP >When inheriting from {{ node.name }},
|
||||
you can overwrite those methods in order to add custom logic:
|
||||
</WRAP>
|
||||
{% elseif tag == 'extension-hook' %}
|
||||
===== extension-hook synthesis =====
|
||||
<WRAP >
|
||||
When inheriting from {{ node.name }},
|
||||
you can extend the behaviour of iTop by implementing:
|
||||
</WRAP>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% set sanitizedMethod = method|trim('\\', 'left')|replace({(node.name~'::'): ''}) %}
|
||||
{% if '::' in sanitizedMethod -%}
|
||||
{%- if node.tags['phpdoc-tuning-exclude-inherited'] is not defined %}
|
||||
* [[{{sanitizedMethod|replace({'::': '#'})|lower}}|↪{{sanitizedMethod}}]] — {{ method.summary|replace({"\n":""})|raw }}
|
||||
{% endif %}
|
||||
{%- else %}
|
||||
* [[#{{sanitizedMethod}}|{{sanitizedMethod}}]] — {{ method.summary|replace({"\n":""})|raw }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -1,20 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{% set title_level = '==' %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{%- for tagName,tags in structure.tags if tagName in tagsWithDescription -%}
|
||||
{%- for tag in tags -%}
|
||||
{%- if tag.description is not empty -%}
|
||||
{%- if WRAP is defined -%}
|
||||
<WRAP {{WRAP}}>
|
||||
{%- endif -%}
|
||||
{{title_level}} {{ tagName }} {{title_level}}
|
||||
{{ tag.description|escape }}
|
||||
{%- if WRAP is defined -%}
|
||||
</WRAP>
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endfor -%}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{% set title_level='=====' %}
|
||||
{% endif %}
|
||||
|
||||
{% if blacklist is not defined %}
|
||||
{% set blacklist =['link', 'see', 'abstract', 'example', 'method', 'property', 'property-read', 'property-write', 'package', 'subpackage', 'api', 'api-advanced', 'todo', 'code-example'] %}
|
||||
{% endif %}
|
||||
{% if hidden_by is not defined -%}
|
||||
{# Do not display @api if @api-advanced is also present #}
|
||||
{%- set hidden_by = {"api" : "api-advanced"} -%}
|
||||
{%- endif %}
|
||||
|
||||
{#^ {% for tagName,tags in structure.tags if tagName not in blacklist -%}#}
|
||||
{#{{ tagName }} ^#}
|
||||
{#{%- endfor %}#}
|
||||
|
||||
{% for tagName,tags in structure.tags if tagName not in blacklist and (hidden_by[tagName] is not defined or structure.tags[hidden_by[tagName]] is not defined) %}
|
||||
{%- if loop.first %}
|
||||
{{title_level}} Tags {{title_level}}
|
||||
{% endif %}
|
||||
^ {{ tagName }} | {% for tag in tags %}{{ tag.version ? tag.version ~ ' ' : '' }}{{ tag.description}}{% endfor %} |
|
||||
{% endfor %}
|
||||
@@ -1,24 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{% set title_level='' %}
|
||||
{% endif %}
|
||||
{% for tagName,tags in structure.tags if tagName in ['used-by'] %}
|
||||
{% if loop.first %}
|
||||
{{title_level}} Used by {{title_level}}
|
||||
{% endif %}
|
||||
{% for tag in tags %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ tag.reference ?: tag.link }} : {{ tag.description ?: tag.reference }}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{#{% for tagName,tags in method.tags if tagName in ['uses'] %}#}
|
||||
{#{% if loop.first %}#}
|
||||
{#<dt>Uses</dt>#}
|
||||
{#{% endif %}#}
|
||||
{#{% for tag in tags %}#}
|
||||
{#<dd>{{ tag.reference|raw }}</dd>#}
|
||||
{#{% endfor %}#}
|
||||
{#{% endfor %}#}
|
||||
@@ -1,24 +0,0 @@
|
||||
{% if title_level is not defined %}
|
||||
{% set title_level='' %}
|
||||
{% endif %}
|
||||
{% for tagName,tags in structure.tags if tagName in ['uses'] %}
|
||||
{% if loop.first %}
|
||||
{{title_level}} Uses {{title_level}}
|
||||
{% endif %}
|
||||
{% for tag in tags %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ tag.reference ?: tag.link }} : {{ tag.description ?: tag.reference }}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{#{% for tagName,tags in method.tags if tagName in ['uses'] %}#}
|
||||
{#{% if loop.first %}#}
|
||||
{#<dt>Uses</dt>#}
|
||||
{#{% endif %}#}
|
||||
{#{% for tag in tags %}#}
|
||||
{#<dd>{{ tag.reference|raw }}</dd>#}
|
||||
{#{% endfor %}#}
|
||||
{#{% endfor %}#}
|
||||
@@ -1,11 +0,0 @@
|
||||
{% if wrap is not defined -%}
|
||||
{% set wrap = 'notice' %}
|
||||
{%- endif -%}
|
||||
{% if hidden_by is not defined -%}
|
||||
{# Do not display @api if @api-advanced is also present #}
|
||||
{%- set hidden_by = {"api" : "api-advanced"} -%}
|
||||
{%- endif %}
|
||||
|
||||
{%- for tagName,tags in structure.tags if tagName in wrapTags and (hidden_by[tagName] is not defined or structure.tags[hidden_by[tagName]] is not defined) %}
|
||||
<wrap {{wrap}}>{{tagName}}</wrap>
|
||||
{% endfor %}
|
||||
@@ -1,121 +0,0 @@
|
||||
{% extends 'layout.txt.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<wrap button>[[start|🔙 Back]]</wrap>
|
||||
|
||||
{% if node.tags['internal'] is defined %}
|
||||
====== {{ node.name }} ======
|
||||
<WRAP alert>This interface is "internal", and thus is not documented!</WRAP>
|
||||
{% elseif node.tags['api'] is not defined and node.tags['api-advanced'] is not defined and node.tags['overwritable-hook'] is not defined and node.tags['extension-hook'] is not defined %}
|
||||
====== {{ node.name }} ======
|
||||
<WRAP alert>This interface is neither "api", "overwritable-hook" or "extension-hook", and thus is not documented!</WRAP>
|
||||
{% else %}
|
||||
|
||||
====== {{ node.name }} ======
|
||||
|
||||
{% if node.deprecated %}<wrap danger>deprecated</wrap>{% endif %}
|
||||
{% if node.abstract %}<wrap warning>abstract</wrap>{% endif %}
|
||||
{% if node.final %}<wrap notice>final</wrap>{% endif %}
|
||||
{% include 'includes/wrap-tags.txt.twig' with {structure:node, wrap: 'safety', wrapTags: ['api', 'api-advanced', 'overwritable-hook', 'extension-hook']} %}
|
||||
|
||||
|
||||
|
||||
{% if node.deprecated %}
|
||||
=== **<del>Deprecated</del>**===
|
||||
//{{ node.tags.deprecated[0].description }}//
|
||||
{% endif %}
|
||||
|
||||
|
||||
== {{ node.summary|replace({"\n":""})|raw }} ==
|
||||
<html>{{ node.description|markdown|raw }}</html>
|
||||
|
||||
|
||||
{% include 'includes/code-examples.txt.twig' with {structure:node, title_level: '====='} %}
|
||||
|
||||
|
||||
{% set class = node.parent %}
|
||||
{% block hierarchy_element %}
|
||||
|
||||
{% if class and class.name is defined and class.name|trim != '' %}
|
||||
==== parent ====
|
||||
{% set child = class %}
|
||||
{% set class = class.parent %}
|
||||
{{ block('hierarchy_element') }}
|
||||
[[{{ child.name }}|{{ child.name }}]]
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% for interface in node.interfaces|sort_asc %}
|
||||
{% if loop.first %}
|
||||
==== Implements ====
|
||||
{% endif %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ interface.fullyQualifiedStructuralElementName ?: interface }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% for trait in node.usedTraits|sort_asc %}
|
||||
{% if loop.first %}
|
||||
==== Uses traits ====
|
||||
{% endif %}
|
||||
{% if loop.length > 1 %} * {% endif %}{{ trait.fullyQualifiedStructuralElementName ?: trait }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% include 'includes/see-also.txt.twig' with {structure:node, title_level: '==='} %}
|
||||
|
||||
{% include 'includes/tags.txt.twig' with {structure:node, title_level: '=====', blacklist: ['link', 'see', 'abstract', 'example', 'method', 'property', 'property-read', 'property-write', 'package', 'subpackage', 'phpdoc-tuning-exclude-inherited', 'api', 'api-advanced', 'overwritable-hook', 'extension-hook', 'copyright', 'license', 'code-example']} %}
|
||||
|
||||
|
||||
{% set methods = node.inheritedMethods.merge(node.methods) %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'api'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'api-advanced'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'overwritable-hook'} %}
|
||||
{% include 'includes/tag-synthesys.txt.twig' with {methods:methods, tag:'extension-hook'} %}
|
||||
|
||||
<WRAP clear />
|
||||
|
||||
|
||||
{% for method in methods|sort_asc if method.visibility == 'public' %}
|
||||
{%- if loop.first %}
|
||||
===== Public methods =====
|
||||
{% endif %}
|
||||
{{ block('method') }}
|
||||
{% endfor %}
|
||||
{% for method in methods|sort_asc if method.visibility == 'protected' %}
|
||||
{%- if loop.first %}
|
||||
===== Protected methods =====
|
||||
{% endif %}
|
||||
{{ block('method') }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
{% set constants = node.inheritedConstants.merge(node.constants) %}
|
||||
{% if constants|length > 0 %}
|
||||
===== Constants =====
|
||||
{% for constant in constants|sort_asc %}
|
||||
{{ block('constant') }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{#{% set properties = node.inheritedProperties.merge(node.properties) %}#}
|
||||
{#{% for property in properties|sort_asc if property.visibility == 'public' %}#}
|
||||
{#{%- if loop.first %}#}
|
||||
{#===== Public properties =====#}
|
||||
{#{% endif %}#}
|
||||
{#{{ block('property') }}#}
|
||||
{#{% endfor %}#}
|
||||
{#{% for property in properties|sort_asc if property.visibility == 'protected' %}#}
|
||||
{#{%- if loop.first %}#}
|
||||
{#===== Protected properties =====#}
|
||||
{#{% endif %}#}
|
||||
{#{{ block('property') }}#}
|
||||
{#{% endfor %}#}
|
||||
|
||||
|
||||
{%- endif %} {#{% elseif node.tags['xxx'] is not defined and ... #}
|
||||
|
||||
<wrap button>[[start|🔙 Back]]</wrap>
|
||||
{% endblock %}
|
||||
@@ -1,5 +0,0 @@
|
||||
{% use 'elements/constant.txt.twig' %}
|
||||
{% use 'elements/property.txt.twig' %}
|
||||
{% use 'elements/method.txt.twig' %}
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
@@ -1,51 +0,0 @@
|
||||
{% extends 'layout.txt.twig' %}
|
||||
|
||||
{% block content %}
|
||||
{% set namespace = project.namespace %}
|
||||
{{ block('sidebarNamespaces') }}
|
||||
|
||||
{#{{ node.parent|raw }}#}
|
||||
{#====== {{ node.parent.fullyQualifiedStructuralElementName }}{{ node.name }} ======#}
|
||||
|
||||
{% if node.children|length > 0 %}
|
||||
=====Namespaces=====
|
||||
{% include 'includes/namespace-structure-toc.html.twig' with {structures: node.children} %}
|
||||
----
|
||||
{% endif %}
|
||||
|
||||
{% if node.traits|length > 0 %}
|
||||
===== Traits =====
|
||||
{% include 'includes/namespace-structure-toc.html.twig' with {structures: node.traits} %}
|
||||
----
|
||||
{%- endif %}
|
||||
|
||||
{% if node.interfaces|length > 0 %}
|
||||
===== Interfaces =====
|
||||
{% include 'includes/namespace-structure-toc.html.twig' with {structures: node.interfaces} %}
|
||||
----
|
||||
{% endif %}
|
||||
|
||||
{% if node.classes|length > 0 %}
|
||||
===== Classes =====
|
||||
{% include 'includes/namespace-structure-toc.html.twig' with {structures: node.classes} %}
|
||||
----
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
{#{% if node.constants|length > 0 %}#}
|
||||
{#===== Constants =====#}
|
||||
{#{% for constant in node.constants|sort_asc %}#}
|
||||
{# {{ block('constant') }}#}
|
||||
{#{% endfor %}#}
|
||||
{#{% endif %}#}
|
||||
|
||||
{#{% if node.functions|length > 0 %}#}
|
||||
{#===== Functions =====#}
|
||||
|
||||
{#{% for method in node.functions|sort_asc %}#}
|
||||
{# {{ block('method') }}#}
|
||||
{#{% endfor %}#}
|
||||
{#{% endif %}#}
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,49 +0,0 @@
|
||||
|
||||
====== Deprecated elements ======
|
||||
|
||||
{#{% for element in project.indexes.elements if element.deprecated %}#}
|
||||
{#{% if element.file.path != previousPath %}#}
|
||||
{#<li><a href="#{{ element.file.path }}"><i class="icon-file"></i> {{ element.file.path }}</a></li>#}
|
||||
{#{% endif %}#}
|
||||
{#{% set previousPath = element.file.path %}#}
|
||||
{#{% endfor %}#}
|
||||
|
||||
{% for element in project.indexes.elements if element.deprecated %}
|
||||
{% if element.file.path != previousPath %}
|
||||
{% if previousPath %}
|
||||
</WRAP>{# group #}
|
||||
{% endif %}
|
||||
{#<a name="{{ element.file.path }}" id="{{ element.file.path }}"></a>#}
|
||||
===== {{ element.file.path }} ({{ element.tags.deprecated.count }} found)=====
|
||||
|
||||
<WRAP group >
|
||||
<WRAP third column >
|
||||
Element
|
||||
</WRAP>{# third column#}
|
||||
<WRAP third column >
|
||||
Line
|
||||
</WRAP>{# third column#}
|
||||
<WRAP third column >
|
||||
Description
|
||||
</WRAP>{# third column#}
|
||||
|
||||
{% endif %}
|
||||
{% for tag in element.tags.deprecated %}
|
||||
<WRAP group >
|
||||
<WRAP third column >
|
||||
{{ element.fullyQualifiedStructuralElementName }}
|
||||
</WRAP>{# third column#}
|
||||
<WRAP third column >
|
||||
{{ element.line }}
|
||||
</WRAP>{# third column#}
|
||||
<WRAP third column >
|
||||
{{ tag.description }}
|
||||
</WRAP>{# third column#}
|
||||
|
||||
{% endfor %}
|
||||
</WRAP>{# group #}
|
||||
{% set previousPath = element.file.path %}
|
||||
{% else %}
|
||||
<WRAP info>No deprecated elements have been found in this project.</WRAP>
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<template>
|
||||
<author>Bruno DA SILVA</author>
|
||||
<email>contact [at] combodo.com</email>
|
||||
<version>1.0.0</version>
|
||||
<copyright>Combodo 2018</copyright>
|
||||
<description><![CDATA[
|
||||
|
||||
Forked from the clean theme of https://github.com/phpDocumentor/phpDocumentor2 provided under the MIT licence.
|
||||
The original work is copyright "Mike van Riel".
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
To improve performance you can add the following to your .htaccess:
|
||||
|
||||
<ifModule mod_deflate.c>
|
||||
<filesMatch "\.(js|css|html)$">
|
||||
SetOutputFilter DEFLATE
|
||||
</filesMatch>
|
||||
</ifModule>
|
||||
]]></description>
|
||||
<transformations>
|
||||
<transformation writer="twig" query="namespace" source="templates/combodo-wiki/namespace.txt.twig" artifact="start.txt"/>
|
||||
<transformation writer="twig" query="indexes.classes" source="templates/combodo-wiki/class.txt.twig" artifact="{{name}}.txt"/>
|
||||
<transformation writer="twig" query="indexes.interfaces" source="templates/combodo-wiki/interface.txt.twig" artifact="{{name}}.txt" />
|
||||
</transformations>
|
||||
</template>
|
||||
@@ -25,7 +25,7 @@ if (false === file_exists($sTcPdfRootFolder)) {
|
||||
echo $sCurrentScriptFileName.": No TCPDF lib detected, exiting !\n";
|
||||
return;
|
||||
}
|
||||
$sTcPdfFontsFolder = $sTcPdfRootFolder.'/Fonts/';
|
||||
$sTcPdfFontsFolder = $sTcPdfRootFolder.'/fonts/';
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<p align="center"><a href="https://www.combodo.com/itop-193" target="_blank">
|
||||
<img src="https://www.combodo.com/logos/logo-itop-baseline.svg" width=350>
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="/images/logos/logo-itop-baseline-light.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="/images/logos/logo-itop-baseline-dark.svg">
|
||||
<img src="/images/logos/logo-itop-baseline-light.svg" width="350" alt="Logo iTop with baseline" />
|
||||
</picture>
|
||||
</a></p>
|
||||
|
||||
|
||||
|
||||
@@ -94,15 +94,15 @@ class URP_Profiles extends UserRightsBaseClassGUI
|
||||
$bGrant = $oUserRights->GetProfileActionGrant($this->GetKey(), $sClass, $sAction);
|
||||
if (is_null($bGrant))
|
||||
{
|
||||
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-failure">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
}
|
||||
elseif ($bGrant)
|
||||
{
|
||||
return '<span style="background-color: #ddffdd;">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-success">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-failure">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -250,11 +250,11 @@ class URP_Profiles extends UserRightsBaseClassGUI
|
||||
$iGrant = $oUserRights->GetProfileActionGrant($this->GetKey(), $sClass, $sAction);
|
||||
if (!is_null($iGrant))
|
||||
{
|
||||
return '<span style="background-color: #ddffdd;">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-success">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-failure">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,11 +82,11 @@ class URP_Profiles extends UserRightsBaseClass
|
||||
$oGrant = $oUserRights->GetClassActionGrant($this->GetKey(), $sClass, $sAction);
|
||||
if (is_object($oGrant) && ($oGrant->Get('permission') == 'yes'))
|
||||
{
|
||||
return '<span style="background-color: #ddffdd;">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-success">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-failure">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,12 +40,16 @@ class CoreCannotSaveObjectException extends CoreException
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @since 3.2.3 add param $bWithHeader
|
||||
*/
|
||||
public function getHtmlMessage()
|
||||
public function getHtmlMessage($bWithHeader = false)
|
||||
{
|
||||
$sTitle = Dict::S('UI:Error:SaveFailed');
|
||||
$sContent = "<span><strong>".utils::HtmlEntities($sTitle)."</strong></span>";
|
||||
|
||||
if ($bWithHeader) {
|
||||
$oObject = MetaModel::GetObject($this->sObjectClass, $this->iObjectId, true, true);
|
||||
$sContent .= " <span>".$oObject->Get('friendlyname')."</span>";
|
||||
}
|
||||
if (count($this->aIssues) == 1) {
|
||||
$sIssue = reset($this->aIssues);
|
||||
$sContent .= " <span>".utils::HtmlEntities($sIssue)."</span>";
|
||||
@@ -63,14 +67,14 @@ class CoreCannotSaveObjectException extends CoreException
|
||||
public function getTextMessage()
|
||||
{
|
||||
$sTitle = Dict::S('UI:Error:SaveFailed');
|
||||
$sContent = utils::HtmlEntities($sTitle);
|
||||
$sContent = $sTitle;
|
||||
|
||||
if (count($this->aIssues) == 1) {
|
||||
$sIssue = reset($this->aIssues);
|
||||
$sContent .= utils::HtmlEntities($sIssue);
|
||||
$sContent .= $sIssue;
|
||||
} else {
|
||||
foreach ($this->aIssues as $sError) {
|
||||
$sContent .= " ".utils::HtmlEntities($sError).", ";
|
||||
$sContent .= " " . $sError . ", ";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1556,8 +1556,7 @@ class utils
|
||||
$aResult[] = new JSPopupMenuItem('UI:Menu:AddToDashboard', Dict::S('UI:Menu:AddToDashboard'), "DashletCreationDlg('$sOQL', '$sContext')");
|
||||
$aResult[] = new JSPopupMenuItem('UI:Menu:ShortcutList', Dict::S('UI:Menu:ShortcutList'), "ShortcutListDlg('$sOQL', '$sDataTableId', '$sContext')");
|
||||
if (ApplicationMenu::IsMenuIdEnabled('RunQueriesMenu')) {
|
||||
$oMenuItemPlay = new JSPopupMenuItem('UI:Menu:OpenOQL', Dict::S('UI:Edit:TestQuery'), "OpenOql('$sOQL')");
|
||||
$oMenuItemPlay->SetIconClass('fas fa-play');
|
||||
$oMenuItemPlay = new JSPopupMenuItem('UI:Menu:OpenOQL', Dict::S('UI:Menu:OpenOQL'), "OpenOql('$sOQL')");
|
||||
$aResult[] = $oMenuItemPlay;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
"apereo/phpcas": "~1.6.0",
|
||||
"firebase/php-jwt": "^6.4.0",
|
||||
"guzzlehttp/guzzle": "^7.5.1",
|
||||
"laminas/laminas-mail": "^2.11",
|
||||
"laminas/laminas-servicemanager": "^3.5",
|
||||
"league/oauth2-google": "^4.0.1",
|
||||
"nikic/php-parser": "^4.14.0",
|
||||
"pear/archive_tar": "~1.4.14",
|
||||
@@ -32,6 +30,7 @@
|
||||
"symfony/twig-bundle": "~6.4.0",
|
||||
"symfony/var-dumper": "~6.4.0",
|
||||
"symfony/yaml": "~6.4.0",
|
||||
"symfony/mailer": "~6.4.0",
|
||||
"tecnickcom/tcpdf": "^6.6.0",
|
||||
"thenetworg/oauth2-azure": "^2.0",
|
||||
"soundasleep/html2text": "~2.1"
|
||||
|
||||
1202
composer.lock
generated
1202
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -8165,7 +8165,7 @@ class AttributeURL extends AttributeString
|
||||
* @since 3.0.3 moved from Config to AttributeURL constant
|
||||
*/
|
||||
public const DEFAULT_VALIDATION_PATTERN = /** @lang RegExp */
|
||||
'(https?|ftp)\://([a-zA-Z0-9+!*(),;?&=\$_.-]+(\:[a-zA-Z0-9+!*(),;?&=\$_.-]+)?@)?([a-zA-Z0-9-.]{3,})(\:[0-9]{2,5})?(/([a-zA-Z0-9:%+\$_-]\.?)+)*/?(\?[a-zA-Z+&\$_.-][a-zA-Z0-9;:[\]@&%=+/\$_.,-]*)?(#[a-zA-Z0-9_.-][a-zA-Z0-9+\$_.-]*)?';
|
||||
'(https?|ftp)\://([a-zA-Z0-9+!*(),;?&=\$_.-]+(\:[a-zA-Z0-9+!*(),;?&=\$_.-]+)?@)?([a-zA-Z0-9-.]{3,})(\:[0-9]{2,5})?(/([a-zA-Z0-9:%@+\$_-]\.?)+)*/?(\?[a-zA-Z+&\$_.-][a-zA-Z0-9;:[\]@&%=+/\$_.,-]*)?(#[a-zA-Z0-9_.-][a-zA-Z0-9+\$_.-]*)?';
|
||||
|
||||
/**
|
||||
* Useless constructor, but if not present PHP 7.4.0/7.4.1 is crashing :( (N°2329)
|
||||
|
||||
@@ -114,9 +114,6 @@ class EMail implements iEMail
|
||||
* @param string $sSerializedMessage The serialized representation of the message
|
||||
*
|
||||
* @return \Email
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \Symfony\Component\CssSelector\Exception\SyntaxErrorException
|
||||
*/
|
||||
public static function UnSerializeV2($sSerializedMessage)
|
||||
{
|
||||
|
||||
@@ -7081,7 +7081,7 @@ abstract class MetaModel
|
||||
* @param array $aParams
|
||||
* @param bool $bAllowAllData
|
||||
*
|
||||
* @return \DBObject
|
||||
* @return \DBObject|null
|
||||
* @throws \OQLException
|
||||
*/
|
||||
public static function GetObjectFromOQL($sQuery, $aParams = null, $bAllowAllData = false)
|
||||
|
||||
@@ -859,6 +859,15 @@ class ormLinkSet implements iDBObjectSetIterator, Iterator, SeekableIterator
|
||||
return $oLinkSet;
|
||||
}
|
||||
|
||||
public function RemoveRemoved()
|
||||
{
|
||||
$this->aRemoved = [];
|
||||
}
|
||||
public function GetRemoved()
|
||||
{
|
||||
return $this->aRemoved ;
|
||||
}
|
||||
|
||||
/**
|
||||
* GetValues.
|
||||
*
|
||||
|
||||
@@ -540,9 +540,9 @@ abstract class User extends cmdbAbstractObject
|
||||
function GetGrantAsHtml($sClass, $iAction)
|
||||
{
|
||||
if (UserRights::IsActionAllowed($sClass, $iAction, null, $this)) {
|
||||
return '<span style="background-color: #ddffdd;">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-success">'.Dict::S('UI:UserManagement:ActionAllowed:Yes').'</span>';
|
||||
} else {
|
||||
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
return '<span class="ibo-user-rights ibo-is-failure">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1962,6 +1962,15 @@ class UserRights
|
||||
return self::$m_aCacheUsers[$sAuthentication][$sLogin];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the cache of users
|
||||
* @return void
|
||||
*/
|
||||
public static function ResetCacheUsers()
|
||||
{
|
||||
self::$m_aCacheUsers = [ 'internal' => [], 'external' => [] ];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string$sClass
|
||||
* @param array $aAllowedOrgs
|
||||
|
||||
@@ -7,4 +7,5 @@
|
||||
@import "display-block/all";
|
||||
@import "linked-set/all";
|
||||
@import "tabular-fields/all";
|
||||
@import "welcome-popup/all";
|
||||
@import "welcome-popup/all";
|
||||
@import "user-rights";
|
||||
33
css/backoffice/application/_user-rights.scss
Normal file
33
css/backoffice/application/_user-rights.scss
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2025 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-user-rights--padding-x: $ibo-spacing-400 !default;
|
||||
$ibo-user-rights--padding-y: $ibo-spacing-200 !default;
|
||||
$ibo-user-rights--border-radius: $ibo-border-radius-400 !default;
|
||||
|
||||
$ibo-user-rights--is-success--background-color: $ibo-color-success-100 !default;
|
||||
$ibo-user-rights--is-success--color: $ibo-color-success-950 !default;
|
||||
$ibo-user-rights--is-success--border-color: $ibo-color-success-500 !default;
|
||||
$ibo-user-rights--is-success--border: 1px solid $ibo-user-rights--is-success--border-color !default;
|
||||
|
||||
$ibo-user-rights--is-failure--background-color: $ibo-color-danger-100 !default;
|
||||
$ibo-user-rights--is-failure--color: $ibo-color-danger-950 !default;
|
||||
$ibo-user-rights--is-failure--border-color: $ibo-color-danger-500 !default;
|
||||
$ibo-user-rights--is-failure--border: 1px solid $ibo-user-rights--is-failure--border-color !default;
|
||||
|
||||
.ibo-user-rights {
|
||||
padding: $ibo-user-rights--padding-y $ibo-user-rights--padding-x;
|
||||
border-radius: $ibo-user-rights--border-radius;
|
||||
&.ibo-is-success {
|
||||
background-color: $ibo-user-rights--is-success--background-color;
|
||||
color: $ibo-user-rights--is-success--color;
|
||||
border: $ibo-user-rights--is-success--border;
|
||||
}
|
||||
&.ibo-is-failure {
|
||||
background-color: $ibo-user-rights--is-failure--background-color;
|
||||
color: $ibo-user-rights--is-failure--color;
|
||||
border: $ibo-user-rights--is-failure--border;
|
||||
}
|
||||
}
|
||||
5
css/backoffice/vendors/_selectize.scss
vendored
5
css/backoffice/vendors/_selectize.scss
vendored
@@ -34,6 +34,10 @@ $ibo-vendors-selectize--dropdown--color: $ibo-vendors-selectize-input--color!de
|
||||
$ibo-vendors-selectize--header--padding-x: 8px !default;
|
||||
$ibo-vendors-selectize--header--padding-y: 5px !default;
|
||||
|
||||
.selectize-dropdown, .selectize-input, .selectize-input input {
|
||||
color: $ibo-vendors-selectize-input--color;
|
||||
}
|
||||
|
||||
.selectize-control.single .selectize-input {
|
||||
box-shadow: unset;
|
||||
background-color: $ibo-vendors-selectize-input--background-color;
|
||||
@@ -66,6 +70,7 @@ $ibo-vendors-selectize--header--padding-y: 5px !default;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
|
||||
.selectize-control.single .selectize-input, .selectize-dropdown.single {
|
||||
border-color: $ibo-vendors-selectize--input--border-color;
|
||||
}
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
$ibo-color-grey-950: darken($nord0, 15%);
|
||||
$ibo-color-grey-900: darken($nord0, 10%);
|
||||
$ibo-color-grey-850: darken($nord0, 5%);
|
||||
$ibo-color-grey-800: $nord0 ;
|
||||
$ibo-color-grey-700: $nord1;
|
||||
$ibo-color-grey-600: $nord2;
|
||||
$ibo-color-grey-500: $nord3;
|
||||
$ibo-color-grey-400: lighten($ibo-color-grey-500, 10%);
|
||||
$ibo-color-grey-300: lighten($ibo-color-grey-400, 10%);
|
||||
$ibo-color-grey-250: lighten($ibo-color-grey-300, 15%);
|
||||
$ibo-color-grey-200: $nord4;
|
||||
$ibo-color-grey-100: $nord5;
|
||||
$ibo-color-grey-50: $nord6;
|
||||
$ibo-color-grey-950: darken($nord0, 15%) !default;
|
||||
$ibo-color-grey-900: darken($nord0, 10%) !default;
|
||||
$ibo-color-grey-850: darken($nord0, 5%) !default;
|
||||
$ibo-color-grey-800: $nord0 !default;
|
||||
$ibo-color-grey-700: $nord1 !default;
|
||||
$ibo-color-grey-600: $nord2 !default;
|
||||
$ibo-color-grey-500: $nord3 !default;
|
||||
$ibo-color-grey-400: lighten($ibo-color-grey-500, 10%) !default;
|
||||
$ibo-color-grey-300: lighten($ibo-color-grey-400, 10%) !default;
|
||||
$ibo-color-grey-250: lighten($ibo-color-grey-300, 15%) !default;
|
||||
$ibo-color-grey-200: $nord4 !default;
|
||||
$ibo-color-grey-100: $nord5 !default;
|
||||
$ibo-color-grey-50: $nord6 !default;
|
||||
|
||||
$ibo-color-red-100: lighten($nord11, 40%);
|
||||
$ibo-color-red-200: lighten($nord11, 35%);
|
||||
$ibo-color-red-300: lighten($nord11, 22%);
|
||||
$ibo-color-red-400: lighten($nord11, 15%);
|
||||
$ibo-color-red-500: lighten($nord11, 7%);
|
||||
$ibo-color-red-600: $nord11;
|
||||
$ibo-color-red-700: darken($nord11, 7%);
|
||||
$ibo-color-red-800: darken($nord11, 15%);
|
||||
$ibo-color-red-900: darken($nord11, 22%);
|
||||
$ibo-color-red-100: lighten($nord11, 40%) !default;
|
||||
$ibo-color-red-200: lighten($nord11, 35%) !default;
|
||||
$ibo-color-red-300: lighten($nord11, 22%) !default;
|
||||
$ibo-color-red-400: lighten($nord11, 15%) !default;
|
||||
$ibo-color-red-500: lighten($nord11, 7%) !default;
|
||||
$ibo-color-red-600: $nord11 !default;
|
||||
$ibo-color-red-700: darken($nord11, 7%) !default;
|
||||
$ibo-color-red-800: darken($nord11, 15%) !default;
|
||||
$ibo-color-red-900: darken($nord11, 22%) !default;
|
||||
|
||||
$ibo-color-primary-100: lighten($nord8, 15%);
|
||||
$ibo-color-primary-200: darken($ibo-color-primary-100, 7%);
|
||||
$ibo-color-primary-300: $nord8;
|
||||
$ibo-color-primary-400: darken($ibo-color-primary-300, 7%);
|
||||
$ibo-color-primary-500: $nord9;
|
||||
$ibo-color-primary-600: darken($ibo-color-primary-500, 7%);
|
||||
$ibo-color-primary-700: lighten($nord10, 7%);
|
||||
$ibo-color-primary-800: $nord10;
|
||||
$ibo-color-primary-900: darken($ibo-color-primary-800, 20%);
|
||||
$ibo-color-primary-950: darken($ibo-color-primary-900, 10%);
|
||||
$ibo-color-primary-100: lighten($nord8, 15%) !default;
|
||||
$ibo-color-primary-200: darken($ibo-color-primary-100, 7%) !default;
|
||||
$ibo-color-primary-300: $nord8 !default;
|
||||
$ibo-color-primary-400: darken($ibo-color-primary-300, 7%) !default;
|
||||
$ibo-color-primary-500: $nord9 !default;
|
||||
$ibo-color-primary-600: darken($ibo-color-primary-500, 7%) !default;
|
||||
$ibo-color-primary-700: lighten($nord10, 7%) !default;
|
||||
$ibo-color-primary-800: $nord10 !default;
|
||||
$ibo-color-primary-900: darken($ibo-color-primary-800, 20%) !default;
|
||||
$ibo-color-primary-950: darken($ibo-color-primary-900, 10%) !default;
|
||||
|
||||
/* - Secondary color of the brand */
|
||||
$ibo-color-secondary-100: $ibo-color-grey-100;
|
||||
$ibo-color-secondary-200: $ibo-color-grey-200;
|
||||
$ibo-color-secondary-300: $ibo-color-grey-300;
|
||||
$ibo-color-secondary-400: $ibo-color-grey-400;
|
||||
$ibo-color-secondary-500: $ibo-color-grey-500;
|
||||
$ibo-color-secondary-600: $ibo-color-grey-600;
|
||||
$ibo-color-secondary-700: $ibo-color-grey-700;
|
||||
$ibo-color-secondary-800: $ibo-color-grey-800;
|
||||
$ibo-color-secondary-850: $ibo-color-grey-850;
|
||||
$ibo-color-secondary-900: $ibo-color-grey-900;
|
||||
$ibo-color-secondary-950: $ibo-color-grey-950;
|
||||
$ibo-color-secondary-100: $ibo-color-grey-100 !default;
|
||||
$ibo-color-secondary-200: $ibo-color-grey-200 !default;
|
||||
$ibo-color-secondary-300: $ibo-color-grey-300 !default;
|
||||
$ibo-color-secondary-400: $ibo-color-grey-400 !default;
|
||||
$ibo-color-secondary-500: $ibo-color-grey-500 !default;
|
||||
$ibo-color-secondary-600: $ibo-color-grey-600 !default;
|
||||
$ibo-color-secondary-700: $ibo-color-grey-700 !default;
|
||||
$ibo-color-secondary-800: $ibo-color-grey-800 !default;
|
||||
$ibo-color-secondary-850: $ibo-color-grey-850 !default;
|
||||
$ibo-color-secondary-900: $ibo-color-grey-900 !default;
|
||||
$ibo-color-secondary-950: $ibo-color-grey-950 !default;
|
||||
|
||||
$text : $ibo-color-grey-100;
|
||||
$text-invert: $ibo-color-grey-800;
|
||||
@@ -89,7 +89,7 @@ $ibo-field--fullscreen-toggler--background-color--on-hover: $ibo-color-grey-500;
|
||||
|
||||
$ibo-input-wrapper--is-error--background-color: $ibo-color-red-800;
|
||||
$ibo-input-wrapper--is-error--border-color: $ibo-color-red-700;
|
||||
$ibo-field-validation: $ibo-color-red-200;
|
||||
$ibo-field-validation: $ibo-color-red-300;
|
||||
$ibo-field--background-color--is-fullscreen: $ibo-color-grey-700;
|
||||
$ibo-field--label--background-color--is-fullscreen: $ibo-color-grey-800;
|
||||
|
||||
@@ -175,11 +175,13 @@ $ibo-input-select-wrapper--after--color: $ibo-color-secondary-300;
|
||||
$ibo-input-select--action-button--color: $ibo-input-select-wrapper--after--color;
|
||||
$ibo-input-select-selectize--item--active--text-color: $ibo-color-grey-100;
|
||||
$ibo-input-select-selectize--item--active--background-color: $ibo-color-grey-500;
|
||||
$ibo-input-select--autocomplete-item-image--background-color: $ibo-color-grey-800;
|
||||
$ibo-vendors-selectize-input--color: $ibo-body-text-color;
|
||||
$ibo-vendors-selectize-input--background-color: $ibo-input--background-color;
|
||||
$ibo-vendors-selectize--input--border-color: $ibo-input--border-color;
|
||||
$ibo-vendors-selectize--element--active--background: $ibo-color-grey-400;
|
||||
$ibo-vendors-selectize--element--active--color: $ibo-body-text-color;
|
||||
$ibo-vendors-selectize-control--plugin-add-button--add-option--color: $ibo-input-select--action-button--color;
|
||||
|
||||
$ibo-popover-menu--item-separator--background-color: $ibo-color-grey-500;
|
||||
$ibo-popover-menu--item--text-color: $ibo-color-grey-200;
|
||||
@@ -287,4 +289,12 @@ $ibo-welcome-popup--stack-item--background-color: $ibo-color-grey-600;
|
||||
$ibo-welcome-popup--stack-item--border-color: $ibo-color-grey-800;
|
||||
$ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900;
|
||||
|
||||
$ibo-vendors-ckeditor--ck-content--text-color: $ibo-color-grey-900;
|
||||
$ibo-vendors-ckeditor--ck-content--text-color: $ibo-color-grey-900;
|
||||
|
||||
$ibo-user-rights--is-success--background-color: $ibo-color-success-950 !default;
|
||||
$ibo-user-rights--is-success--color: $ibo-color-success-100 !default;
|
||||
$ibo-user-rights--is-success--border-color: $ibo-color-success-950 !default;
|
||||
|
||||
$ibo-user-rights--is-failure--background-color: $ibo-color-danger-950 !default;
|
||||
$ibo-user-rights--is-failure--color: $ibo-color-danger-100 !default;
|
||||
$ibo-user-rights--is-failure--border-color: $ibo-color-danger-950 !default;
|
||||
@@ -1,3 +1,8 @@
|
||||
$ibo-color-success-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-base-lightness-100) !default;
|
||||
$ibo-color-danger-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-danger-100) !default;
|
||||
$ibo-color-information-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-information-100) !default;
|
||||
$ibo-color-warning-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-warning-100) !default;
|
||||
|
||||
$ibo-navigation-menu--menu-group-title--text-color--is-active: $ibo-color-blue-grey-900;
|
||||
$ibo-navigation-menu--menu-group--background-color--is-active: $ibo-color-white-100;
|
||||
$ibo-navigation-menu--menu-node--background-color: $ibo-color-grey-100;
|
||||
@@ -64,4 +69,12 @@ $ibo-button-colors: ( 'regular': ( /* Semantics */
|
||||
$ibo-panel-colors: ('primary': $ibo-color-primary-800,'secondary': $ibo-color-secondary-800,'neutral': $ibo-color-grey-800,'information': $ibo-color-information-800,'success': $ibo-color-success-800,'failure': $ibo-color-danger-800,'warning': $ibo-color-warning-800,'danger': $ibo-color-danger-800,'grey' : $ibo-color-grey-800,'blue-grey': $ibo-color-blue-grey-800,'blue': $ibo-color-blue-800,'cyan': $ibo-color-cyan-800,'green': $ibo-color-green-800,'orange' : $ibo-color-orange-800,'red': $ibo-color-red-800,'pink': $ibo-color-pink-800,);
|
||||
|
||||
$ibo-welcome-popup--stack-item--border-color: $ibo-color-grey-950;
|
||||
$ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900;
|
||||
$ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900;
|
||||
|
||||
$ibo-user-rights--is-success--background-color: $ibo-color-success-50 !default;
|
||||
$ibo-user-rights--is-success--color: $ibo-color-success-950 !default;
|
||||
$ibo-user-rights--is-success--border-color: $ibo-color-success-950 !default;
|
||||
|
||||
$ibo-user-rights--is-failure--background-color: $ibo-color-danger-100 !default;
|
||||
$ibo-user-rights--is-failure--color: $ibo-color-danger-950 !default;
|
||||
$ibo-user-rights--is-failure--border-color: $ibo-color-danger-950 !default;
|
||||
@@ -18,6 +18,10 @@ $ibo-toast--icon--font-size: 2rem !default;
|
||||
$ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default;
|
||||
$ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
|
||||
$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default;
|
||||
$ibo-user-rights--is-success--icon: '\f00c' !default;
|
||||
$ibo-user-rights--is-failure--icon: '\f00d' !default;
|
||||
|
||||
|
||||
@each $sName, $sIcon in $ibo-alert--icons {
|
||||
%ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} {
|
||||
@@ -146,4 +150,17 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
|
||||
.ibo-welcome-popup--stack-item.ibo-is-active {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
.ibo-user-rights {
|
||||
&.ibo-is-success::before {
|
||||
content: $ibo-user-rights--is-success--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
&.ibo-is-failure::before {
|
||||
content: $ibo-user-rights--is-failure--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
}
|
||||
@@ -1,71 +1,71 @@
|
||||
$ibo-color-primary-100: $ibo-color-blue-100;
|
||||
$ibo-color-primary-200: $ibo-color-blue-200;
|
||||
$ibo-color-primary-300: $ibo-color-blue-300;
|
||||
$ibo-color-primary-400: $ibo-color-blue-400;
|
||||
$ibo-color-primary-500: $ibo-color-blue-500;
|
||||
$ibo-color-primary-600: $ibo-color-blue-600;
|
||||
$ibo-color-primary-700: $ibo-color-blue-700;
|
||||
$ibo-color-primary-800: $ibo-color-blue-800;
|
||||
$ibo-color-primary-900: $ibo-color-blue-900;
|
||||
$ibo-color-primary-950: $ibo-color-blue-950;
|
||||
$ibo-color-primary-100: $ibo-color-blue-100 !default;
|
||||
$ibo-color-primary-200: $ibo-color-blue-200 !default;
|
||||
$ibo-color-primary-300: $ibo-color-blue-300 !default;
|
||||
$ibo-color-primary-400: $ibo-color-blue-400 !default;
|
||||
$ibo-color-primary-500: $ibo-color-blue-500 !default;
|
||||
$ibo-color-primary-600: $ibo-color-blue-600 !default;
|
||||
$ibo-color-primary-700: $ibo-color-blue-700 !default;
|
||||
$ibo-color-primary-800: $ibo-color-blue-800 !default;
|
||||
$ibo-color-primary-900: $ibo-color-blue-900 !default;
|
||||
$ibo-color-primary-950: $ibo-color-blue-950 !default;
|
||||
|
||||
|
||||
$ibo-color-danger-100: $ibo-color-orange-100;
|
||||
$ibo-color-danger-200: $ibo-color-orange-200;
|
||||
$ibo-color-danger-300: $ibo-color-orange-300;
|
||||
$ibo-color-danger-400: $ibo-color-orange-400;
|
||||
$ibo-color-danger-500: $ibo-color-orange-500;
|
||||
$ibo-color-danger-600: $ibo-color-orange-600;
|
||||
$ibo-color-danger-700: $ibo-color-orange-700;
|
||||
$ibo-color-danger-800: $ibo-color-orange-800;
|
||||
$ibo-color-danger-900: $ibo-color-orange-900;
|
||||
$ibo-color-danger-950: $ibo-color-orange-950;
|
||||
$ibo-color-danger-100: $ibo-color-orange-100 !default;
|
||||
$ibo-color-danger-200: $ibo-color-orange-200 !default;
|
||||
$ibo-color-danger-300: $ibo-color-orange-300 !default;
|
||||
$ibo-color-danger-400: $ibo-color-orange-400 !default;
|
||||
$ibo-color-danger-500: $ibo-color-orange-500 !default;
|
||||
$ibo-color-danger-600: $ibo-color-orange-600 !default;
|
||||
$ibo-color-danger-700: $ibo-color-orange-700 !default;
|
||||
$ibo-color-danger-800: $ibo-color-orange-800 !default;
|
||||
$ibo-color-danger-900: $ibo-color-orange-900 !default;
|
||||
$ibo-color-danger-950: $ibo-color-orange-950 !default;
|
||||
|
||||
|
||||
$ibo-color-yellow-100: #fefce8;
|
||||
$ibo-color-yellow-200: #fef9c3;
|
||||
$ibo-color-yellow-300: #fef08a;
|
||||
$ibo-color-yellow-400: #fde047;
|
||||
$ibo-color-yellow-500: #facc15;
|
||||
$ibo-color-yellow-600: #eab308;
|
||||
$ibo-color-yellow-700: #ca8a04;
|
||||
$ibo-color-yellow-800: #a16207;
|
||||
$ibo-color-yellow-900: #854d0e;
|
||||
$ibo-color-yellow-950: #713f12;
|
||||
$ibo-color-yellow-100: #fefce8 !default;
|
||||
$ibo-color-yellow-200: #fef9c3 !default;
|
||||
$ibo-color-yellow-300: #fef08a !default;
|
||||
$ibo-color-yellow-400: #fde047 !default;
|
||||
$ibo-color-yellow-500: #facc15 !default;
|
||||
$ibo-color-yellow-600: #eab308 !default;
|
||||
$ibo-color-yellow-700: #ca8a04 !default;
|
||||
$ibo-color-yellow-800: #a16207 !default;
|
||||
$ibo-color-yellow-900: #854d0e !default;
|
||||
$ibo-color-yellow-950: #713f12 !default;
|
||||
|
||||
$ibo-color-warning-100: $ibo-color-yellow-100;
|
||||
$ibo-color-warning-200: $ibo-color-yellow-200;
|
||||
$ibo-color-warning-300: $ibo-color-yellow-300;
|
||||
$ibo-color-warning-400: $ibo-color-yellow-400;
|
||||
$ibo-color-warning-500: $ibo-color-yellow-500;
|
||||
$ibo-color-warning-600: $ibo-color-yellow-600;
|
||||
$ibo-color-warning-700: $ibo-color-yellow-700;
|
||||
$ibo-color-warning-800: $ibo-color-yellow-800;
|
||||
$ibo-color-warning-900: $ibo-color-yellow-900;
|
||||
$ibo-color-warning-950: $ibo-color-yellow-950;
|
||||
$ibo-color-warning-100: $ibo-color-yellow-100 !default;
|
||||
$ibo-color-warning-200: $ibo-color-yellow-200 !default;
|
||||
$ibo-color-warning-300: $ibo-color-yellow-300 !default;
|
||||
$ibo-color-warning-400: $ibo-color-yellow-400 !default;
|
||||
$ibo-color-warning-500: $ibo-color-yellow-500 !default;
|
||||
$ibo-color-warning-600: $ibo-color-yellow-600 !default;
|
||||
$ibo-color-warning-700: $ibo-color-yellow-700 !default;
|
||||
$ibo-color-warning-800: $ibo-color-yellow-800 !default;
|
||||
$ibo-color-warning-900: $ibo-color-yellow-900 !default;
|
||||
$ibo-color-warning-950: $ibo-color-yellow-950 !default;
|
||||
|
||||
|
||||
$ibo-color-success-100: $ibo-color-blue-100;
|
||||
$ibo-color-success-200: $ibo-color-blue-200;
|
||||
$ibo-color-success-300: $ibo-color-blue-300;
|
||||
$ibo-color-success-400: $ibo-color-blue-400;
|
||||
$ibo-color-success-500: $ibo-color-blue-500;
|
||||
$ibo-color-success-600: $ibo-color-blue-600;
|
||||
$ibo-color-success-700: $ibo-color-blue-700;
|
||||
$ibo-color-success-800: $ibo-color-blue-800;
|
||||
$ibo-color-success-900: $ibo-color-blue-900;
|
||||
$ibo-color-success-950: $ibo-color-blue-950;
|
||||
$ibo-color-success-100: $ibo-color-blue-100 !default;
|
||||
$ibo-color-success-200: $ibo-color-blue-200 !default;
|
||||
$ibo-color-success-300: $ibo-color-blue-300 !default;
|
||||
$ibo-color-success-400: $ibo-color-blue-400 !default;
|
||||
$ibo-color-success-500: $ibo-color-blue-500 !default;
|
||||
$ibo-color-success-600: $ibo-color-blue-600 !default;
|
||||
$ibo-color-success-700: $ibo-color-blue-700 !default;
|
||||
$ibo-color-success-800: $ibo-color-blue-800 !default;
|
||||
$ibo-color-success-900: $ibo-color-blue-900 !default;
|
||||
$ibo-color-success-950: $ibo-color-blue-950 !default;
|
||||
|
||||
$ibo-color-information-100: #f1f5f9;
|
||||
$ibo-color-information-200: #e2e8f0;
|
||||
$ibo-color-information-300: #cbd5e1;
|
||||
$ibo-color-information-400: #94a3b8;
|
||||
$ibo-color-information-500: #64748b;
|
||||
$ibo-color-information-600: #475569;
|
||||
$ibo-color-information-700: #334155;
|
||||
$ibo-color-information-800: #1e293b;
|
||||
$ibo-color-information-900: #0f172a;
|
||||
$ibo-color-information-950: #020617;
|
||||
$ibo-color-information-100: #f1f5f9 !default;
|
||||
$ibo-color-information-200: #e2e8f0 !default;
|
||||
$ibo-color-information-300: #cbd5e1 !default;
|
||||
$ibo-color-information-400: #94a3b8 !default;
|
||||
$ibo-color-information-500: #64748b !default;
|
||||
$ibo-color-information-600: #475569 !default;
|
||||
$ibo-color-information-700: #334155 !default;
|
||||
$ibo-color-information-800: #1e293b !default;
|
||||
$ibo-color-information-900: #0f172a !default;
|
||||
$ibo-color-information-950: #020617 !default;
|
||||
|
||||
|
||||
$ibo-lifecycle-new-state-primary-color: $ibo-color-information-600;
|
||||
|
||||
@@ -15,6 +15,10 @@ $ibo-toast--icon--font-size: 2rem !default;
|
||||
$ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default;
|
||||
$ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
|
||||
$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default;
|
||||
$ibo-user-rights--is-success--icon: '\f00c' !default;
|
||||
$ibo-user-rights--is-failure--icon: '\f00d' !default;
|
||||
|
||||
|
||||
@each $sName, $sIcon in $ibo-alert--icons {
|
||||
%ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} {
|
||||
@@ -71,3 +75,16 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
}
|
||||
}
|
||||
|
||||
.ibo-user-rights {
|
||||
&.ibo-is-success::before {
|
||||
content: $ibo-user-rights--is-success--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
&.ibo-is-failure::before {
|
||||
content: $ibo-user-rights--is-failure--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
$ibo-color-yellow-100: #fefce8;
|
||||
$ibo-color-yellow-200: #fef9c3;
|
||||
$ibo-color-yellow-300: #fef08a;
|
||||
$ibo-color-yellow-400: #fde047;
|
||||
$ibo-color-yellow-500: #facc15;
|
||||
$ibo-color-yellow-600: #eab308;
|
||||
$ibo-color-yellow-700: #ca8a04;
|
||||
$ibo-color-yellow-800: #a16207;
|
||||
$ibo-color-yellow-900: #854d0e;
|
||||
$ibo-color-yellow-950: #713f12;
|
||||
$ibo-color-yellow-100: #fefce8 !default;
|
||||
$ibo-color-yellow-200: #fef9c3 !default;
|
||||
$ibo-color-yellow-300: #fef08a !default;
|
||||
$ibo-color-yellow-400: #fde047 !default;
|
||||
$ibo-color-yellow-500: #facc15 !default;
|
||||
$ibo-color-yellow-600: #eab308 !default;
|
||||
$ibo-color-yellow-700: #ca8a04 !default;
|
||||
$ibo-color-yellow-800: #a16207 !default;
|
||||
$ibo-color-yellow-900: #854d0e !default;
|
||||
$ibo-color-yellow-950: #713f12 !default;
|
||||
|
||||
$ibo-color-success-100: $ibo-color-blue-100;
|
||||
$ibo-color-success-200: $ibo-color-blue-200;
|
||||
$ibo-color-success-300: $ibo-color-blue-300;
|
||||
$ibo-color-success-400: $ibo-color-blue-400;
|
||||
$ibo-color-success-500: $ibo-color-blue-500;
|
||||
$ibo-color-success-600: $ibo-color-blue-600;
|
||||
$ibo-color-success-700: $ibo-color-blue-700;
|
||||
$ibo-color-success-800: $ibo-color-blue-800;
|
||||
$ibo-color-success-900: $ibo-color-blue-900;
|
||||
$ibo-color-success-950: $ibo-color-blue-950;
|
||||
$ibo-color-success-100: $ibo-color-blue-100 !default;
|
||||
$ibo-color-success-200: $ibo-color-blue-200 !default;
|
||||
$ibo-color-success-300: $ibo-color-blue-300 !default;
|
||||
$ibo-color-success-400: $ibo-color-blue-400 !default;
|
||||
$ibo-color-success-500: $ibo-color-blue-500 !default;
|
||||
$ibo-color-success-600: $ibo-color-blue-600 !default;
|
||||
$ibo-color-success-700: $ibo-color-blue-700 !default;
|
||||
$ibo-color-success-800: $ibo-color-blue-800 !default;
|
||||
$ibo-color-success-900: $ibo-color-blue-900 !default;
|
||||
$ibo-color-success-950: $ibo-color-blue-950 !default;
|
||||
|
||||
$ibo-color-information-100: #f1f5f9;
|
||||
$ibo-color-information-200: #e2e8f0;
|
||||
$ibo-color-information-300: #cbd5e1;
|
||||
$ibo-color-information-400: #94a3b8;
|
||||
$ibo-color-information-500: #64748b;
|
||||
$ibo-color-information-600: #475569;
|
||||
$ibo-color-information-700: #334155;
|
||||
$ibo-color-information-800: #1e293b;
|
||||
$ibo-color-information-900: #0f172a;
|
||||
$ibo-color-information-950: #020617;
|
||||
$ibo-color-information-100: #f1f5f9 !default;
|
||||
$ibo-color-information-200: #e2e8f0 !default;
|
||||
$ibo-color-information-300: #cbd5e1 !default;
|
||||
$ibo-color-information-400: #94a3b8 !default;
|
||||
$ibo-color-information-500: #64748b !default;
|
||||
$ibo-color-information-600: #475569 !default;
|
||||
$ibo-color-information-700: #334155 !default;
|
||||
$ibo-color-information-800: #1e293b !default;
|
||||
$ibo-color-information-900: #0f172a !default;
|
||||
$ibo-color-information-950: #020617 !default;
|
||||
|
||||
|
||||
$ibo-lifecycle-new-state-primary-color: $ibo-color-information-600;
|
||||
|
||||
@@ -15,6 +15,10 @@ $ibo-toast--icon--font-size: 2rem !default;
|
||||
$ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default;
|
||||
$ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
|
||||
$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default;
|
||||
$ibo-user-rights--is-success--icon: '\f00c' !default;
|
||||
$ibo-user-rights--is-failure--icon: '\f00d' !default;
|
||||
|
||||
|
||||
@each $sName, $sIcon in $ibo-alert--icons {
|
||||
%ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} {
|
||||
@@ -71,3 +75,15 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default;
|
||||
}
|
||||
}
|
||||
|
||||
.ibo-user-rights {
|
||||
&.ibo-is-success::before {
|
||||
content: $ibo-user-rights--is-success--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
&.ibo-is-failure::before {
|
||||
content: $ibo-user-rights--is-failure--icon;
|
||||
@extend %fa-solid-base;
|
||||
margin-right: $ibo-user-rights--icon--margin-right;
|
||||
}
|
||||
}
|
||||
@@ -201,7 +201,7 @@ SQL;
|
||||
}
|
||||
SetupLog::Info("Initializing attachment/item_org_id - $iUpdated records have been adjusted");
|
||||
|
||||
if (MetaModel::GetAttributeDef('Attachment', 'contact_id') instanceof AttributeExternalKey) {
|
||||
if (MetaModel::GetAttributeDef('Attachment', 'contact_id') instanceof AttributeExternalKey && version_compare($sPreviousVersion, '3.2.0', '<')) {
|
||||
SetupLog::Info("Upgrading itop-attachment from '$sPreviousVersion' to '$sCurrentVersion'. Starting with 3.2.0, contact_id will be added into the DB...");
|
||||
$sUserTableName = MetaModel::DBGetTable('User');
|
||||
$sUserFieldContactId = MetaModel::GetAttributeDef('User', 'contactid')->Get('sql');
|
||||
|
||||
@@ -22,6 +22,7 @@ use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\FieldSet\FieldSet;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Spinner\SpinnerUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
|
||||
use Combodo\iTop\Application\UI\Base\UIBlock;
|
||||
@@ -409,6 +410,9 @@ JS
|
||||
|
||||
$sEnvironment = addslashes(utils::GetCurrentEnvironment());
|
||||
|
||||
$oModalSpinner = SpinnerUIBlockFactory::MakeMedium(null, $sPleaseWaitBackup);
|
||||
$sModalSpinnerHtml = BlockRenderer::RenderBlockTemplates($oModalSpinner);
|
||||
|
||||
$oP->add_script(
|
||||
<<<JS
|
||||
function LaunchBackupNow()
|
||||
@@ -420,7 +424,7 @@ function LaunchBackupNow()
|
||||
{
|
||||
const oModal = CombodoModal.OpenModal({
|
||||
title: '$sBackUpNow',
|
||||
content: '<i class="ajax-spin fas fa-sync-alt fa-spin"></i> $sPleaseWaitBackup'
|
||||
content: `$sModalSpinnerHtml`
|
||||
});
|
||||
|
||||
var oParams = {};
|
||||
|
||||
@@ -22,7 +22,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Class:KnownError/Attribute:problem_id+' => '',
|
||||
'Class:KnownError/Attribute:problem_ref' => 'Rérérence problème lié',
|
||||
'Class:KnownError/Attribute:problem_ref+' => '',
|
||||
'Class:KnownError/Attribute:symptom' => 'Symptome',
|
||||
'Class:KnownError/Attribute:symptom' => 'Symptôme',
|
||||
'Class:KnownError/Attribute:symptom+' => '',
|
||||
'Class:KnownError/Attribute:root_cause' => 'Cause première',
|
||||
'Class:KnownError/Attribute:root_cause+' => '',
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Portal:Form:Close:Warning' => 'Opravdu chcete opustit tento formulář? Data vložená do formuláře budou ztracena ',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Portal:Form:Close:Warning' => 'Soll diese Eingabemaske verlassen werden? Eingegebene Daten werden nicht gespeichert.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: Objekt kann nicht erzeugt werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: Objekt kann nicht geupdated werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -70,6 +70,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -57,6 +57,7 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -59,6 +59,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Portal:Form:Close:Warning' => '¿Desea abandorar este formulario? Datos modificados se perderan',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: no se puede crear el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: no se puede actualizar el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Portal:Form:Close:Warning' => 'Voulez-vous quitter ce formulaire ? Les données saisies seront perdues',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Erreur: L\'objet n\'a pas été créé. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Erreur: L\'objet n\'a pas été modifié. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Erreur durant la validation du champ \'%1$s\' : %2$s',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Portal:Form:Close:Warning' => 'Szeretné elhagyni ezt az űrlapot? A megadott adatok elveszhetnek',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Hiba: az objektum nem hozható létre. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Hiba: az objektum nem frissíthető. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -62,6 +62,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Portal:Form:Close:Warning' => 'Ben je zeker dat je dit venster wil sluiten? Ingevoerde gegevens kunnen verloren gaan.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Fout: object kan niet worden aangemaakt. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Fout: object kan niet worden aangepast. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Portal:Form:Close:Warning' => 'Chcesz opuścić ten formularz? Wprowadzone dane mogą zostać utracone',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Błąd: nie można utworzyć obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Błąd: nie można zaktualizować obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Portal:Form:Close:Warning' => 'Você deseja abandonar esta página? Os dados digitados podem ser perdidos',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Erro: objeto não pode ser criado. Verifique os objetos e anexos associados antes de enviar novamente este formulário',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Erro: objeto não pode ser atualizado. Verifique os objetos e anexos associados antes de enviar novamente este formulário',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -62,6 +62,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Portal:Form:Close:Warning' => 'Вы действительно хотите закрыть эту форму? Введённые данные могут быть утеряны.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -61,6 +61,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -70,6 +70,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Portal:Form:Close:Warning' => '确定要离开表单吗? 已输入数据会丢失',
|
||||
'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
|
||||
// UserProfile brick
|
||||
|
||||
@@ -337,7 +337,18 @@ class ObjectFormHandlerHelper
|
||||
);
|
||||
}
|
||||
} else {
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, implode('<br/>', $aFormData['validation']['messages']['error']['_main']));
|
||||
$sErrorMessages = '';
|
||||
foreach ($aFormData['validation']['messages']['error'] as $sFieldId => $aMessages) {
|
||||
if ($sFieldId == '_main') {
|
||||
$sErrorMessages .= implode(' - ', $aFormData['validation']['messages']['error']['_main']);
|
||||
} else {
|
||||
$oObj = $oFormManager->GetObject();
|
||||
$sLabel = $oObj->GetLabel($sFieldId);
|
||||
$sErrorMessages .= Dict::Format('Portal:Error:CheckToWriteFailed', $sLabel, (is_array($aMessages) ? implode(' - ', $aMessages) : $aMessages));
|
||||
}
|
||||
}
|
||||
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, $sErrorMessages);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
{% if aTilesRendering[brick.GetId] is defined %}
|
||||
{{ aTilesRendering[brick.GetId]|raw }}
|
||||
{% else %}
|
||||
{% include '' ~ brick.GetTileTemplatePath with {brick: brick} %}
|
||||
{% include '' ~ brick.GetTileTemplatePath with {brick: brick} only %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
@@ -256,6 +256,10 @@
|
||||
<code><![CDATA[
|
||||
public function OnBeforeWriteTicket(Combodo\iTop\Service\Events\EventData $oEventData)
|
||||
{
|
||||
// do not update impacted items from portal
|
||||
if(ContextTag::Check(ContextTag::TAG_PORTAL)){
|
||||
return;
|
||||
}
|
||||
$aChanges = $this->ListChanges();
|
||||
if ($this->IsNew() || array_key_exists('functionalcis_list', $aChanges) || array_key_exists('contacts_list', $aChanges)) {
|
||||
$this->UpdateImpactedItems();
|
||||
|
||||
@@ -522,6 +522,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'UI:Menu:Manage' => 'Spravovat...',
|
||||
'UI:Menu:EMail' => 'Email',
|
||||
'UI:Menu:CSVExport' => 'CSV export',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Upravit...',
|
||||
'UI:Menu:Delete' => 'Odstranit...',
|
||||
'UI:Menu:BulkDelete' => 'Odstranit...',
|
||||
|
||||
@@ -522,6 +522,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'UI:Menu:Manage' => 'Administrer...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'CSV Eksport...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Modificer...',
|
||||
'UI:Menu:Delete' => 'Slet...',
|
||||
'UI:Menu:BulkDelete' => 'Slet...',
|
||||
|
||||
@@ -521,6 +521,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:Menu:Manage' => 'Verwalten...',
|
||||
'UI:Menu:EMail' => 'E-Mail',
|
||||
'UI:Menu:CSVExport' => 'CSV-Export...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Modifizieren...',
|
||||
'UI:Menu:Delete' => 'Löschen...',
|
||||
'UI:Menu:BulkDelete' => 'Löschen...',
|
||||
|
||||
@@ -543,6 +543,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Menu:Manage' => 'Manage...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'CSV Export...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query',
|
||||
'UI:Menu:Modify' => 'Modify...',
|
||||
'UI:Menu:Delete' => 'Delete...',
|
||||
'UI:Menu:BulkDelete' => 'Delete...',
|
||||
@@ -967,6 +968,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:SystemIntrusion' => 'Access denied. You have requested an operation that is not allowed for you.',
|
||||
'UI:FatalErrorMessage' => 'Fatal error, '.ITOP_APPLICATION_SHORT.' cannot continue.',
|
||||
'UI:Error_Details' => 'Error: %1$s.',
|
||||
'UI:LinkedSet:RemovedObjectsDuringRefresh' => 'Warning: removed object(s) in <b>%1$s</b> are there again : <br>%2$s',
|
||||
|
||||
'UI:PageTitle:ProfileProjections' => ITOP_APPLICATION_SHORT.' user management - profile projections',
|
||||
'UI:UserManagement:Class' => 'Class',
|
||||
|
||||
@@ -543,6 +543,7 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'UI:Menu:Manage' => 'Manage...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'CSV Export...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query',
|
||||
'UI:Menu:Modify' => 'Modify...',
|
||||
'UI:Menu:Delete' => 'Delete...',
|
||||
'UI:Menu:BulkDelete' => 'Delete...',
|
||||
|
||||
@@ -520,6 +520,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'UI:Menu:Manage' => 'Administrar',
|
||||
'UI:Menu:EMail' => 'Enviar por Correo Electrónico',
|
||||
'UI:Menu:CSVExport' => 'Exportar a CSV...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Modificar',
|
||||
'UI:Menu:Delete' => 'Borrar',
|
||||
'UI:Menu:BulkDelete' => 'Borrar',
|
||||
|
||||
@@ -535,6 +535,7 @@ Nous espérons que vous aimerez cette version autant que nous avons eu du plaisi
|
||||
'UI:Menu:Manage' => 'Gérer...',
|
||||
'UI:Menu:EMail' => 'Envoyer par eMail',
|
||||
'UI:Menu:CSVExport' => 'Exporter en CSV...',
|
||||
'UI:Menu:OpenOQL' => 'Voir la requête OQL',
|
||||
'UI:Menu:Modify' => 'Modifier...',
|
||||
'UI:Menu:Delete' => 'Supprimer...',
|
||||
'UI:Menu:BulkDelete' => 'Supprimer...',
|
||||
|
||||
@@ -524,6 +524,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'UI:Menu:Manage' => 'Kezelés...',
|
||||
'UI:Menu:EMail' => 'Email',
|
||||
'UI:Menu:CSVExport' => 'CSV exportálás...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Módosítás...',
|
||||
'UI:Menu:Delete' => 'Törlés...',
|
||||
'UI:Menu:BulkDelete' => 'Törlés...',
|
||||
|
||||
@@ -524,6 +524,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'UI:Menu:Manage' => 'Gestisci...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'Esporta CSV...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Modifica...',
|
||||
'UI:Menu:Delete' => 'Cancella...',
|
||||
'UI:Menu:BulkDelete' => 'Cancella...',
|
||||
|
||||
@@ -525,6 +525,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'UI:Menu:Manage' => '管理...',
|
||||
'UI:Menu:EMail' => 'Eメール',
|
||||
'UI:Menu:CSVExport' => 'CSVエクスポート...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => '修正...',
|
||||
'UI:Menu:Delete' => '削除...',
|
||||
'UI:Menu:BulkDelete' => '削除...',
|
||||
|
||||
@@ -521,6 +521,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'UI:Menu:Manage' => 'Beheer...',
|
||||
'UI:Menu:EMail' => 'E-mail',
|
||||
'UI:Menu:CSVExport' => 'CSV Export...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Bewerk...',
|
||||
'UI:Menu:Delete' => 'Verwijder...',
|
||||
'UI:Menu:BulkDelete' => 'Verwijder...',
|
||||
|
||||
@@ -536,6 +536,7 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'UI:Menu:Manage' => 'Zarządzaj...',
|
||||
'UI:Menu:EMail' => 'e-mail',
|
||||
'UI:Menu:CSVExport' => 'Eksport CSV...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Zmień...',
|
||||
'UI:Menu:Delete' => 'Usuń...',
|
||||
'UI:Menu:BulkDelete' => 'Usuń...',
|
||||
|
||||
@@ -519,6 +519,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'UI:Menu:Manage' => 'Gerenciar...',
|
||||
'UI:Menu:EMail' => 'Enviar via e-mail',
|
||||
'UI:Menu:CSVExport' => 'Exportar para CSV...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Editar...',
|
||||
'UI:Menu:Delete' => 'Excluir...',
|
||||
'UI:Menu:BulkDelete' => 'Exclução em massa...',
|
||||
|
||||
@@ -522,6 +522,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'UI:Menu:Manage' => 'Управление...',
|
||||
'UI:Menu:EMail' => 'Отправить ссылку по email',
|
||||
'UI:Menu:CSVExport' => 'Экспорт в CSV...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Редактировать...',
|
||||
'UI:Menu:Delete' => 'Удалить...',
|
||||
'UI:Menu:BulkDelete' => 'Удалить...',
|
||||
|
||||
@@ -528,6 +528,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'UI:Menu:Manage' => 'Manažovať...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'CSV Export',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Upraviť...',
|
||||
'UI:Menu:Delete' => 'Vymazať...',
|
||||
'UI:Menu:BulkDelete' => 'Vymazať...',
|
||||
|
||||
@@ -525,6 +525,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'UI:Menu:Manage' => 'Yönet...',
|
||||
'UI:Menu:EMail' => 'e-posta',
|
||||
'UI:Menu:CSVExport' => 'CSV olarak dışarı ver...',
|
||||
'UI:Menu:OpenOQL' => 'View the OQL query~~',
|
||||
'UI:Menu:Modify' => 'Düzenle...',
|
||||
'UI:Menu:Delete' => 'Sil...',
|
||||
'UI:Menu:BulkDelete' => 'Sil...',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user