├── .gitignore ├── README-v1.0.md ├── README-v2.0.md ├── README.md ├── action-shell-exec ├── README.md ├── datamodel.action-shell-exec.xml ├── en.dict.action-shell-exec.php ├── images │ ├── action-shell-script-1.png │ ├── action-shell-script-2.png │ ├── action-shell-script-3.png │ └── action-shell-script-4.png ├── main.action-shell-exec.php ├── model.action-shell-exec.php ├── module.action-shell-exec.php └── ru.dict.action-shell-exec.php ├── add-user-action-menu ├── README.md ├── datamodel.add-user-action-menu.xml ├── en.dict.add-user-action-menu.php ├── main.add-user-action-menu.php ├── model.add-user-action-menu.php ├── module.add-user-action-menu.php └── preview.png ├── api-client ├── datamodel.api-client.xml ├── en.dict.api-client.php ├── main.api-client.php ├── module.api-client.php └── zh.dict.api-client.php ├── attribute-custom ├── README.md ├── datamodel.attribute-custom.xml ├── main.attribute-custom.php └── module.attribute-custom.php ├── combodo-autoclose-ticket ├── en.dict.combodo-autoclose-ticket.php ├── fr.dict.combodo-autoclose-ticket.php ├── main.combodo-autoclose-ticket.php └── module.combodo-autoclose-ticket.php ├── custom-mod ├── README.md ├── datamodel.custom-mod.xml ├── en.dict.custom-mod.php ├── main.custom-mod.php ├── model.custom-mod.php ├── module.custom-mod.php └── zh.dict.custom-mod.php ├── custom-pages ├── README.md ├── batch_query.php ├── datamodel.custom-pages.xml ├── en.dict.custom-pages.php ├── images │ ├── error.png │ ├── lnkusertoserver.png │ └── right.gif ├── main.custom-pages.php ├── model.custom-pages.php ├── module.custom-pages.php ├── preview │ ├── account.png │ └── preview.png ├── resetpwd.php ├── server_accounts.php ├── verify_user.php └── zh.dict.custom-pages.php ├── email-reply ├── ajax.php ├── data.struct.ta-actions.xml ├── data.struct.ta-links.xml ├── data.struct.ta-triggers.xml ├── de.dict.email-reply.php ├── email-reply.js ├── en.dict.email-reply.php ├── fr.dict.email-reply.php ├── jquery.placeholder.js ├── main.email-reply.php ├── module.email-reply.php └── paper_clip.png ├── getclass.sh ├── itop-object-copier ├── copy.php ├── en.dict.itop-object-copier.php ├── es_cr.dict.itop-object-copier.php ├── extension.xml ├── fr.dict.itop-object-copier.php ├── main.itop-object-copier.php ├── module.itop-object-copier.php └── readme.txt ├── itop-request-template-modify ├── README.md ├── datamodel.itop-request-template-modify.xml ├── display_control.js ├── layout.html.twig ├── main.itop-request-template-modify.php ├── model.itop-request-template-modify.php ├── module.itop-request-template-modify.php ├── template_base_3.0.4.patch └── zh.dict.itop-request-template-modify.php ├── itop-request-template-portal ├── datamodel.itop-request-template-portal.xml └── module.itop-request-template-portal.php ├── itop-request-template ├── datamodel.itop-request-template.xml ├── en.dict.itop-request-template.php ├── fr.dict.itop-request-template.php ├── main.itop-request-template.php ├── model.itop-request-template.php └── module.itop-request-template.php ├── itop.dot ├── knowitop-trigger-on-update ├── README.md ├── en.dict.knowitop-trigger-on-update.php ├── main.knowitop-trigger-on-update.php ├── module.knowitop-trigger-on-update.php └── ru.dict.knowitop-trigger-on-update.php ├── kubernetes ├── README.md ├── composer │ ├── composer.json │ ├── composer.lock │ └── vendor │ │ ├── autoload.php │ │ ├── composer │ │ ├── ClassLoader.php │ │ ├── LICENSE │ │ ├── autoload_classmap.php │ │ ├── autoload_namespaces.php │ │ ├── autoload_psr4.php │ │ ├── autoload_real.php │ │ ├── autoload_static.php │ │ └── installed.json │ │ └── sebastian │ │ └── diff │ │ ├── .github │ │ └── stale.yml │ │ ├── .gitignore │ │ ├── .php_cs.dist │ │ ├── .travis.yml │ │ ├── ChangeLog.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── build.xml │ │ ├── composer.json │ │ ├── phpunit.xml │ │ ├── src │ │ ├── Chunk.php │ │ ├── Diff.php │ │ ├── Differ.php │ │ ├── Exception │ │ │ ├── ConfigurationException.php │ │ │ ├── Exception.php │ │ │ └── InvalidArgumentException.php │ │ ├── Line.php │ │ ├── LongestCommonSubsequenceCalculator.php │ │ ├── MemoryEfficientLongestCommonSubsequenceCalculator.php │ │ ├── Output │ │ │ ├── AbstractChunkOutputBuilder.php │ │ │ ├── DiffOnlyOutputBuilder.php │ │ │ ├── DiffOutputBuilderInterface.php │ │ │ ├── StrictUnifiedDiffOutputBuilder.php │ │ │ └── UnifiedDiffOutputBuilder.php │ │ ├── Parser.php │ │ └── TimeEfficientLongestCommonSubsequenceCalculator.php │ │ └── tests │ │ ├── ChunkTest.php │ │ ├── DiffTest.php │ │ ├── DifferTest.php │ │ ├── Exception │ │ ├── ConfigurationExceptionTest.php │ │ └── InvalidArgumentExceptionTest.php │ │ ├── LineTest.php │ │ ├── LongestCommonSubsequenceTest.php │ │ ├── MemoryEfficientImplementationTest.php │ │ ├── Output │ │ ├── AbstractChunkOutputBuilderTest.php │ │ ├── DiffOnlyOutputBuilderTest.php │ │ ├── Integration │ │ │ ├── StrictUnifiedDiffOutputBuilderIntegrationTest.php │ │ │ └── UnifiedDiffOutputBuilderIntegrationTest.php │ │ ├── StrictUnifiedDiffOutputBuilderDataProvider.php │ │ ├── StrictUnifiedDiffOutputBuilderTest.php │ │ ├── UnifiedDiffOutputBuilderDataProvider.php │ │ └── UnifiedDiffOutputBuilderTest.php │ │ ├── ParserTest.php │ │ ├── TimeEfficientImplementationTest.php │ │ ├── Utils │ │ ├── FileUtils.php │ │ ├── UnifiedDiffAssertTrait.php │ │ ├── UnifiedDiffAssertTraitIntegrationTest.php │ │ └── UnifiedDiffAssertTraitTest.php │ │ └── fixtures │ │ ├── .editorconfig │ │ ├── UnifiedDiffAssertTraitIntegrationTest │ │ ├── 1_a.txt │ │ ├── 1_b.txt │ │ ├── 2_a.txt │ │ └── 2_b.txt │ │ ├── out │ │ ├── .editorconfig │ │ └── .gitignore │ │ ├── patch.txt │ │ ├── patch2.txt │ │ └── serialized_diff.bin ├── css │ └── jquery-confirm.min.css ├── datamodel.kubernetes.xml ├── doc │ └── images │ │ ├── deployment-debug.png │ │ ├── deployment-details.png │ │ ├── deployment-list.png │ │ ├── ingress-list.png │ │ └── ingressannotation.png ├── en.dict.kubernetes.php ├── images │ ├── apptemplate.png │ ├── configuration.png │ ├── deployment.png │ ├── error.png │ ├── ingress.png │ ├── k8sappstore.png │ ├── kubernetes.png │ ├── new.png │ ├── secret.png │ └── sidecar.png ├── js │ ├── ace │ │ ├── ace.js │ │ ├── mode-yaml.js │ │ ├── theme-terminal.js │ │ └── theme-xcode.js │ ├── functions.js │ ├── highlightjs │ │ ├── highlight.pack.js │ │ └── styles │ │ │ ├── arta.css │ │ │ ├── atom-one-dark.css │ │ │ ├── dracula.css │ │ │ ├── far.css │ │ │ ├── github.css │ │ │ ├── monokai.css │ │ │ ├── vs2015.css │ │ │ └── xt256.css │ ├── jquery-confirm.min.js │ └── jquery.fullscreen-min.js ├── main.kubernetes.php ├── model.kubernetes.php ├── module.kubernetes.php └── zh.dict.kubernetes.php ├── le-alert-rule ├── README.md ├── datamodel.le-alert-rule.xml ├── en.dict.le-alert-rule.php ├── images │ └── alertrule.png ├── model.le-alert-rule.php ├── module.le-alert-rule.php └── zh.dict.le-alert-rule.php ├── le-config-mgmt ├── README.md ├── datamodel.le-config-mgmt.xml ├── en.dict.le-config-mgmt.php ├── images │ ├── app.png │ ├── business.png │ ├── business1.png │ ├── business2.png │ ├── cluster.png │ ├── contact.png │ ├── database.png │ ├── domain.png │ ├── idc.png │ ├── interface.png │ ├── link.png │ ├── logo.png │ ├── messagequeue.png │ ├── middleware.png │ ├── mongodb.png │ ├── mysql.png │ ├── rabbitmq.png │ ├── rack.png │ ├── rds.png │ ├── redis.png │ ├── s3.png │ ├── swiftmq.png │ ├── thirdsrv.png │ ├── url.png │ └── yunpan.png ├── model.le-config-mgmt.php ├── module.le-config-mgmt.php ├── preview.png └── zh.dict.le-config-mgmt.php ├── le-itop.png ├── patches ├── README.md ├── css │ └── jquery-confirm.min.css ├── fix_css.patch ├── fix_expressioncache.patch ├── fix_jquery_i18n.patch ├── fix_restapi_customfields.patch ├── fix_zh_pdf_export.sh ├── improve_alert.patch ├── js │ ├── jquery-confirm-function.js │ └── jquery-confirm.min.js ├── lib │ └── tcpdf │ │ └── fonts │ │ ├── droidsansfallback.ctg.z │ │ ├── droidsansfallback.php │ │ └── droidsansfallback.z └── run.sh ├── portal-custom ├── README.txt ├── css │ ├── bootstrap-theme-darkly.min.css │ ├── bootstrap-theme-flatly.min.css │ ├── bootstrap-theme-simplex.min.css │ ├── bootstrap-theme-slate.min.css │ ├── bootstrap-theme-superhero.min.css │ └── bootstrap-theme-united.min.css ├── datamodel.portal-custom.xml ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── module.portal-custom.php └── zh.dict.portal-custom.php ├── precanned-replies-pro ├── datamodel.precanned-replies-pro.xml ├── de.dict.precanned-replies-pro.php ├── en.dict.precanned-replies-pro.php ├── fr.dict.precanned-replies-pro.php └── module.precanned-replies-pro.php ├── precanned-replies ├── ajax.php ├── datamodel.precanned-replies.xml ├── de.dict.precanned-replies.php ├── en.dict.precanned-replies.php ├── fr.dict.precanned-replies.php ├── main.precanned-replies.php ├── module.precanned-replies.php ├── precanned-replies.js └── zh.dict.precanned-replies.php ├── readme.txt ├── relation_of_class.sh ├── rest-ext ├── README.md ├── datamodel.rest-ext.xml ├── en.dict.rest-ext.php ├── main.rest-ext.php ├── model.rest-ext.php ├── module.rest-ext.php ├── preview │ └── preview.png └── zh.dict.rest-ext.php ├── templates-base ├── ajax.render.php ├── en.dict.templates-base.php ├── fr.dict.templates-base.php ├── model.templates-base.php ├── module.templates-base.php └── template_form_handler.js ├── trigger-on-delete ├── README.md ├── en.dict.trigger-on-delete.php ├── main.trigger-on-delete.php ├── module.trigger-on-delete.php └── zh.dict.trigger-on-delete.php ├── xml2dot.sh └── zh-language ├── datamodel.zh-language.xml ├── en.dict.zh-language.php ├── include ├── zh.dict.authent-external.php ├── zh.dict.authent-ldap.php ├── zh.dict.authent-local.php ├── zh.dict.itop-attachments.php ├── zh.dict.itop-backup.php ├── zh.dict.itop-change-mgmt-itil.php ├── zh.dict.itop-change-mgmt.php ├── zh.dict.itop-config-mgmt.php ├── zh.dict.itop-config.php ├── zh.dict.itop-incident-mgmt-itil.php ├── zh.dict.itop-knownerror-mgmt.php ├── zh.dict.itop-problem-mgmt.php ├── zh.dict.itop-request-mgmt-itil.php ├── zh.dict.itop-request-mgmt.php ├── zh.dict.itop-service-mgmt-provider.php ├── zh.dict.itop-service-mgmt.php ├── zh.dict.itop-tickets.php ├── zh.dict.itop-welcome-itil.php ├── zh.dict.missing.php ├── zh.dictionary.itop.core.php └── zh.dictionary.itop.ui.php ├── missing.sh ├── model.zh-language.php ├── module.zh-language.php ├── update.sh └── zh.dict.zh-language.php /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | *.tar.gz 3 | *.gz 4 | *.tar 5 | authent-lesso/ 6 | -------------------------------------------------------------------------------- /README-v2.0.md: -------------------------------------------------------------------------------- 1 | # itop-extensions 2 | iTop扩展 3 | 4 | ## 版本 5 | - v2.0-beta 基于新版portal(2.3.3) 6 | - v1.0 基于legency portal 7 | 8 | ## 扩展列表 9 | 10 | | 名称 | 功能 |备注 | 11 | | ---- | ---- | --- | 12 | |action-shell-exec |支持脚本类型的action |Fork from [action-shell-exec](https://github.com/itop-itsm-ru/action-shell-exec),修改支持自定义变量 | 13 | |add-user-action-menu |右上角新增编辑用户资料按钮 | | 14 | |api-client | iTop Rest/json api的客户端,方便在其他扩展里调用api | | 15 | |attribute-custom |添加AttributeClassCustom类型 | | 16 | |authent-ucenter | 未实现 | | 17 | |combodo-autoclose-ticket | 自动关闭工单 |iTop官方插件 | 18 | |custom-mod |修改工单生命周期(拒绝->关闭, 指派->拒绝) | | 19 | |custom-pages |批量查询页面,服务器账号管理页面 | | 20 | |email-reply | 工单更新邮件通知 |iTop官方插件 | 21 | |itop-object-copier |克隆/复制 对象 |iTop官方插件 | 22 | |itop-request-template |请求模板 |iTop官方插件 | 23 | |templates-base |请求模板-base |iTop官方插件 | 24 | |itop-request-template-portal |请求模板-portal |iTop官方插件 | 25 | |itop-request-template-modify |请求模板-修改,新增自动派单,资源申请自动录入CMDB,唯一性检查等功能 | | 26 | |knowitop-trigger-on-update |触发器(对象更新时) |Fork from: [knowitop-trigger-on-update](https://github.com/vbkunin/knowitop-trigger-on-update) | 27 | |le-alert-rule |定义报警规则 | | 28 | |le-config-mgmt |自定义数据模型 | | 29 | |portal-announcement |在legency portal展示公告信息,修改插件支持富文本 |Fork from: [portal-announcement](https://github.com/itop-itsm-ru/portal-announcement) | 30 | |portal-custom |自定义新版portal样式 | | 31 | |precanned-replies |工单预定义回复 |iTop官方插件 | 32 | |precanned-replies-pro |工单预定义回复 |iTop官方插件 | 33 | |rest-ext |rest/json扩展,新增ext/get_related接口 | 34 | |trigger-on-delete |触发器(对象删除时) | | 35 | |zh-language |中文翻译 | | 36 | |kubernetes |Kubernetes工作流 | | 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # itop-extensions 2 | iTop扩展 3 | 4 | ## Features 5 | - 自定义数据模型,唯一性校验 6 | - 修改`request-template`,结合`action-shell-exec`实现工单自动指派,申请资源唯一性检查,资源自动入库 7 | - 独立的中文翻译扩展 8 | - [kubernetes](kubernetes) 工作流支持 9 | - 自定义页面实现批量查询功能 10 | - REST接口新增ext/get_related 11 | 12 | ## 版本 13 | - v3.x 基于2.5.1 14 | - v2.0 基于新版portal(2.3.3) 15 | - v1.0 基于legency portal 16 | 17 | ## 扩展列表 18 | 19 | | 名称 | 功能 |备注 | 20 | | ---- | ---- | --- | 21 | |action-shell-exec |支持脚本类型的action |Fork from [action-shell-exec](https://github.com/itop-itsm-ru/action-shell-exec),修改支持自定义变量 | 22 | |add-user-action-menu |右上角新增编辑用户资料按钮 | | 23 | |api-client | iTop Rest/json api的客户端,方便在其他扩展里调用api | | 24 | |attribute-custom |添加AttributeClassCustom类型 | | 25 | |combodo-autoclose-ticket | 自动关闭工单 |iTop官方插件 | 26 | |custom-mod |修改工单生命周期(拒绝->关闭, 指派->拒绝) | | 27 | |custom-pages |批量查询页面,服务器账号管理页面 | | 28 | |email-reply | 工单更新邮件通知 |iTop官方插件 | 29 | |itop-object-copier |克隆/复制 对象 |iTop官方插件 | 30 | |itop-request-template |请求模板 |iTop官方插件 | 31 | |templates-base |请求模板-base |iTop官方插件 | 32 | |itop-request-template-portal |请求模板-portal |iTop官方插件 | 33 | |itop-request-template-modify |请求模板-修改,新增自动派单,资源申请自动录入CMDB,唯一性检查等功能 | | 34 | |knowitop-trigger-on-update |触发器(对象更新时) |Fork from: [knowitop-trigger-on-update](https://github.com/vbkunin/knowitop-trigger-on-update) | 35 | |le-alert-rule |定义报警规则 | | 36 | |le-config-mgmt |自定义数据模型 | | 37 | |portal-custom |自定义新版portal样式 | | 38 | |precanned-replies |工单预定义回复 |iTop官方插件 | 39 | |precanned-replies-pro |工单预定义回复 |iTop官方插件 | 40 | |rest-ext |rest/json扩展,新增ext/get_related接口 | 41 | |trigger-on-delete |触发器(对象删除时) | | 42 | |zh-language |中文翻译 | | 43 | |kubernetes |Kubernetes工作流 | | 44 | 45 | ## 补丁 46 | 本扩展需要打补丁,参见 [README](patches) 47 | -------------------------------------------------------------------------------- /action-shell-exec/datamodel.action-shell-exec.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /action-shell-exec/en.dict.action-shell-exec.php: -------------------------------------------------------------------------------- 1 | 6 | * @license http://opensource.org/licenses/AGPL-3.0 7 | */ 8 | 9 | Dict::Add('EN US', 'English', 'English', array( 10 | 11 | 'Class:ActionShellExec' => 'Script execution', 12 | 'Class:ActionShellExec+' => 'Action shell-script execution', 13 | 'Class:ActionShellExec/Attribute:script_path' => 'Path', 14 | 'Class:ActionShellExec/Attribute:script_path+' => 'Path to the script', 15 | 'Class:ActionShellExec/Attribute:script_path?' => 'Check the permissions on the script can be executed!!', 16 | 'Class:ActionShellExec/Attribute:params' => 'Parameters', 17 | 'Class:ActionShellExec/Attribute:params+' => 'Passed parameters, one per line', 18 | 'Class:ActionShellExec/Attribute:params?' => "Examples (how to set => how to pick up in the script): 19 | \$this->name\$ => \$THIS_NAME 20 | \$this->caller_id->org_id\$ => \$THIS_CALLER_ID_ORG_ID 21 | START = \$this->start_date\$ => \$START 22 | DESC = \$this->html(description)\$ => \$DESC 23 | YOUR_ENV_VAR = \$this->attcode\$ => \$YOUR_ENV_VAR", 24 | 25 | 'Class:EventNotificationShellExec' => 'Notification of script execution', 26 | 'Class:EventNotificationShellExec+' => 'Notification of script execution', 27 | 'Class:EventNotificationShellExec/Attribute:log' => 'Log', 28 | 'Class:EventNotificationShellExec/Attribute:log+' => 'Log', 29 | )); 30 | 31 | -------------------------------------------------------------------------------- /action-shell-exec/images/action-shell-script-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/action-shell-exec/images/action-shell-script-1.png -------------------------------------------------------------------------------- /action-shell-exec/images/action-shell-script-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/action-shell-exec/images/action-shell-script-2.png -------------------------------------------------------------------------------- /action-shell-exec/images/action-shell-script-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/action-shell-exec/images/action-shell-script-3.png -------------------------------------------------------------------------------- /action-shell-exec/images/action-shell-script-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/action-shell-exec/images/action-shell-script-4.png -------------------------------------------------------------------------------- /action-shell-exec/model.action-shell-exec.php: -------------------------------------------------------------------------------- 1 | "Action Shell Script Execution", 14 | 'category' => 'business', 15 | 16 | // Setup 17 | // 18 | 'dependencies' => array( 19 | 'itop-config-mgmt/2.2.0' 20 | ), 21 | 'mandatory' => false, 22 | 'visible' => true, 23 | 24 | // Components 25 | // 26 | 'datamodel' => array( 27 | 'model.action-shell-exec.php', 28 | 'main.action-shell-exec.php', 29 | ), 30 | 'webservice' => array( 31 | 32 | ), 33 | 'data.struct' => array( 34 | // add your 'structure' definition XML files here, 35 | ), 36 | 'data.sample' => array( 37 | // add your sample data XML files here, 38 | ), 39 | 40 | // Documentation 41 | // 42 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 43 | 'doc.more_information' => '', // hyperlink to more information, if any 44 | 45 | // Default settings 46 | // 47 | 'settings' => array( 48 | // Module specific settings go here, if any 49 | ), 50 | ) 51 | ); 52 | 53 | 54 | ?> 55 | -------------------------------------------------------------------------------- /action-shell-exec/ru.dict.action-shell-exec.php: -------------------------------------------------------------------------------- 1 | 6 | * @license http://opensource.org/licenses/AGPL-3.0 7 | */ 8 | 9 | Dict::Add('RU RU', 'Russian', 'Russian', array( 10 | 11 | 'Class:ActionShellExec' => 'Запуск скрипта', 12 | 'Class:ActionShellExec+' => 'Действие запуска shell-скрипта', 13 | 'Class:ActionShellExec/Attribute:script_path' => 'Путь', 14 | 'Class:ActionShellExec/Attribute:script_path+' => 'Путь до файла скрипта', 15 | 'Class:ActionShellExec/Attribute:script_path?' => 'Проверьте наличие прав на запуск файла!', 16 | 'Class:ActionShellExec/Attribute:params' => 'Параметры', 17 | 'Class:ActionShellExec/Attribute:params+' => 'Передаваемые параметры, один на строку', 18 | 'Class:ActionShellExec/Attribute:params?' => "Примеры (как задать => как забрать в скрипте): 19 | \$this->name\$ => \$THIS_NAME 20 | \$this->caller_id->org_id\$ => \$THIS_CALLER_ID_ORG_ID 21 | START = \$this->start_date\$ => \$START 22 | DESC = \$this->html(description)\$ => \$DESC 23 | YOUR_ENV_VAR = \$this->attcode\$ => \$YOUR_ENV_VAR", 24 | 25 | 'Class:EventNotificationShellExec' => 'Уведомление о запуске скрипта', 26 | 'Class:EventNotificationShellExec+' => 'Уведомление о запуске скрипта', 27 | 'Class:EventNotificationShellExec/Attribute:log' => 'Журнал', 28 | 'Class:EventNotificationShellExec/Attribute:log+' => 'Журнал', 29 | )); 30 | 31 | 32 | -------------------------------------------------------------------------------- /add-user-action-menu/README.md: -------------------------------------------------------------------------------- 1 | ## add-user-action-menu 2 | 右上角新增编辑用户资料按钮 3 | 4 | ![](preview.png) 5 | 6 | -------------------------------------------------------------------------------- /add-user-action-menu/datamodel.add-user-action-menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /add-user-action-menu/en.dict.add-user-action-menu.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /add-user-action-menu/main.add-user-action-menu.php: -------------------------------------------------------------------------------- 1 | 18 | 19 | /** 20 | * Sample extension to show how adding menu items in iTop 21 | * This extension does nothing really useful but shows how to use the three possible 22 | * types of menu items: 23 | * 24 | * - An URL to any web page 25 | * - A Javascript function call 26 | * - A separator (horizontal line in the menu) 27 | */ 28 | class AddUserActionMenuExtension implements iPopupMenuExtension 29 | { 30 | /** 31 | * Get the list of items to be added to a menu. 32 | * 33 | * This method is called by the framework for each menu. 34 | * The items will be inserted in the menu in the order of the returned array. 35 | * @param int $iMenuId The identifier of the type of menu, as listed by the constants MENU_xxx 36 | * @param mixed $param Depends on $iMenuId, see the constants defined above 37 | * @return object[] An array of ApplicationPopupMenuItem or an empty array if no action is to be added to the menu 38 | */ 39 | public static function EnumItems($iMenuId, $param) 40 | { 41 | if($iMenuId == self::MENU_USER_ACTIONS) 42 | { 43 | $sAppRootUrl = trim(MetaModel::GetConfig()->Get('app_root_url')); 44 | $sPersonId = UserRights::GetContactId(); 45 | $sUID = 'EditCurrentPerson'; 46 | $sLabel = '编辑个人资料'; 47 | $sURL = $sAppRootUrl . 'pages/UI.php?operation=modify&class=Person&id=' . $sPersonId; 48 | $sTarget = ''; 49 | $oMenuItem = new UrlPopupMenuItem($sUID, $sLabel, $sURL, $sTarget); 50 | return array($oMenuItem); 51 | } 52 | return array(); 53 | } 54 | } 55 | 56 | -------------------------------------------------------------------------------- /add-user-action-menu/model.add-user-action-menu.php: -------------------------------------------------------------------------------- 1 | 'Add User Action Menu', 13 | 'category' => 'business', 14 | 15 | // Setup 16 | // 17 | 'dependencies' => array( 18 | 19 | ), 20 | 'mandatory' => false, 21 | 'visible' => true, 22 | 23 | // Components 24 | // 25 | 'datamodel' => array( 26 | 'main.add-user-action-menu.php', 27 | 'model.add-user-action-menu.php' 28 | ), 29 | 'webservice' => array( 30 | 31 | ), 32 | 'data.struct' => array( 33 | // add your 'structure' definition XML files here, 34 | ), 35 | 'data.sample' => array( 36 | // add your sample data XML files here, 37 | ), 38 | 39 | // Documentation 40 | // 41 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 42 | 'doc.more_information' => '', // hyperlink to more information, if any 43 | 44 | // Default settings 45 | // 46 | 'settings' => array( 47 | // Module specific settings go here, if any 48 | ), 49 | ) 50 | ); 51 | 52 | 53 | ?> 54 | -------------------------------------------------------------------------------- /add-user-action-menu/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/add-user-action-menu/preview.png -------------------------------------------------------------------------------- /api-client/datamodel.api-client.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /api-client/en.dict.api-client.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /api-client/module.api-client.php: -------------------------------------------------------------------------------- 1 | 'iTop Api Client', 13 | 'category' => 'business', 14 | 15 | // Setup 16 | // 17 | 'dependencies' => array( 18 | ), 19 | 'mandatory' => false, 20 | 'visible' => true, 21 | 22 | // Components 23 | // 24 | 'datamodel' => array( 25 | 'main.api-client.php', 26 | ), 27 | 'webservice' => array( 28 | 29 | ), 30 | 'data.struct' => array( 31 | // add your 'structure' definition XML files here, 32 | ), 33 | 'data.sample' => array( 34 | // add your sample data XML files here, 35 | ), 36 | 37 | // Documentation 38 | // 39 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 40 | 'doc.more_information' => '', // hyperlink to more information, if any 41 | 42 | // Default settings 43 | // 44 | 'settings' => array( 45 | 'user' => 'apiuser', 46 | 'passwd' => 'passwd' 47 | // Module specific settings go here, if any 48 | ), 49 | ) 50 | ); 51 | 52 | 53 | ?> 54 | -------------------------------------------------------------------------------- /api-client/zh.dict.api-client.php: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /attribute-custom/README.md: -------------------------------------------------------------------------------- 1 | # 自定义Attribute 2 | 3 | ## AttributeClassCustom 4 | 由于setup/compiler.class.inc.php中写死了编译的Attribute类型,AttributeClass不能正确编译,这里自定义一个AttributeClassCustom,将default_value作为class_category,可以走编译的默认行为 5 | -------------------------------------------------------------------------------- /attribute-custom/datamodel.attribute-custom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /attribute-custom/module.attribute-custom.php: -------------------------------------------------------------------------------- 1 | 'Custom Attribute', 13 | 'category' => 'business', 14 | 15 | // Setup 16 | // 17 | 'dependencies' => array( 18 | ), 19 | 'mandatory' => false, 20 | 'visible' => true, 21 | 22 | // Components 23 | // 24 | 'datamodel' => array( 25 | 'main.attribute-custom.php', 26 | ), 27 | 'webservice' => array( 28 | 29 | ), 30 | 'data.struct' => array( 31 | // add your 'structure' definition XML files here, 32 | ), 33 | 'data.sample' => array( 34 | // add your sample data XML files here, 35 | ), 36 | 37 | // Documentation 38 | // 39 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 40 | 'doc.more_information' => '', // hyperlink to more information, if any 41 | 42 | // Default settings 43 | // 44 | 'settings' => array( 45 | // Module specific settings go here, if any 46 | ), 47 | ) 48 | ); 49 | 50 | 51 | ?> 52 | -------------------------------------------------------------------------------- /combodo-autoclose-ticket/en.dict.combodo-autoclose-ticket.php: -------------------------------------------------------------------------------- 1 | 21 | * @author Romain Quetiez 22 | * @author Denis Flaven 23 | * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL 24 | */ 25 | 26 | Dict::Add('EN US', 'English', 'English', array( 27 | // Dictionary entries go here 28 | )); 29 | 30 | 31 | ?> 32 | -------------------------------------------------------------------------------- /combodo-autoclose-ticket/fr.dict.combodo-autoclose-ticket.php: -------------------------------------------------------------------------------- 1 | 21 | * @author Romain Quetiez 22 | * @author Denis Flaven 23 | * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL 24 | */ 25 | 26 | Dict::Add('FR FR', 'French', 'Français', array( 27 | // Dictionary entries go here 28 | 29 | 30 | )); 31 | 32 | 33 | ?> 34 | -------------------------------------------------------------------------------- /combodo-autoclose-ticket/module.combodo-autoclose-ticket.php: -------------------------------------------------------------------------------- 1 | 'Auto closure of Incident and UserRequest', 24 | 'category' => 'feature', 25 | 26 | // Setup 27 | // 28 | 'dependencies' => array( 29 | 30 | ), 31 | 'mandatory' => false, 32 | 'visible' => true, 33 | 34 | // Components 35 | // 36 | 'datamodel' => array( 37 | 'main.combodo-autoclose-ticket.php' 38 | ), 39 | 'webservice' => array( 40 | 41 | ), 42 | 'data.struct' => array( 43 | // add your 'structure' definition XML files here, 44 | ), 45 | 'data.sample' => array( 46 | // add your sample data XML files here, 47 | ), 48 | 49 | // Documentation 50 | // 51 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 52 | 'doc.more_information' => '', // hyperlink to more information, if any 53 | 54 | // Default settings 55 | // 56 | 'settings' => array( 57 | // Module specific settings go here, if any 58 | 'incident_autoclose_delay' => '7', 59 | 'userrequest_autoclose_delay' => '7', 60 | ), 61 | ) 62 | ); 63 | 64 | 65 | ?> 66 | -------------------------------------------------------------------------------- /custom-mod/README.md: -------------------------------------------------------------------------------- 1 | ## custom-mod 2 | 主要修改工单的生命周期 3 | - 拒绝状态的工单可以被关闭 4 | - 指派状态的工单可以被拒绝 5 | - 删除新portal的location_id 6 | -------------------------------------------------------------------------------- /custom-mod/en.dict.custom-mod.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /custom-mod/main.custom-mod.php: -------------------------------------------------------------------------------- 1 | Get('app_root_url')); 31 | if(isset($_GET["operation"]) && isset($_GET["class"]) && !isAdmin()) 32 | { 33 | if($_GET["operation"] == "new" && $_GET["class"] == "UserRequest") 34 | { 35 | $location = "$appRootUrl" . "portal/index.php?operation=create_request"; 36 | header("Location: $location"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /custom-mod/model.custom-mod.php: -------------------------------------------------------------------------------- 1 | 'Custom Modify', 13 | 'category' => 'business', 14 | 15 | // Setup 16 | // 17 | 'dependencies' => array( 18 | 'itop-request-mgmt-itil/2.2.0', 19 | 'itop-tickets/2.2.0' 20 | ), 21 | 'mandatory' => false, 22 | 'visible' => true, 23 | 24 | // Components 25 | // 26 | 'datamodel' => array( 27 | 'model.custom-mod.php', 28 | 'main.custom-mod.php', 29 | ), 30 | 'webservice' => array( 31 | 32 | ), 33 | 'data.struct' => array( 34 | // add your 'structure' definition XML files here, 35 | ), 36 | 'data.sample' => array( 37 | // add your sample data XML files here, 38 | ), 39 | 40 | // Documentation 41 | // 42 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 43 | 'doc.more_information' => '', // hyperlink to more information, if any 44 | 45 | // Default settings 46 | // 47 | 'settings' => array( 48 | // Module specific settings go here, if any 49 | ), 50 | ) 51 | ); 52 | 53 | 54 | ?> 55 | -------------------------------------------------------------------------------- /custom-mod/zh.dict.custom-mod.php: -------------------------------------------------------------------------------- 1 | '提交用户请求', 14 | 'Menu:WelcomeRequest' => '提工单', 15 | 'Menu:WelcomeAudit' => '审计', 16 | 'Menu:PortalUserRequest+' => '创建一个新用户请求工单', 17 | 'Portal:CMDB' => '返回CMDB', 18 | 'Portal:Help' => '查看帮助', 19 | )); 20 | 21 | ?> 22 | -------------------------------------------------------------------------------- /custom-pages/README.md: -------------------------------------------------------------------------------- 1 | ## custom-pages 2 | ### 提供一个批量查询页面 3 | 4 | ![](preview/preview.png) 5 | 6 | ### 服务器账号管理 7 | ![](preview/account.png) 8 | 9 | ### server_accounts 文档 10 | **此部分应该已过期** 11 | 12 | 账号管理工单流程分为工单提交,创建账号,自动指派几个过程,其中,创建账号操作很费时,因此借助除非其和action-shell-exec插件把耗时操作放到后台执行。 13 | 14 | 动作调用的脚本在 [cmdbApi/actions](https://github.com/annProg/cmdbApi/tree/master/actions) 目录下 15 | 16 | #### 需要配置如下触发器及动作 17 | 18 | | 触发器 | 过滤条件 | 动作 | 19 | | ------ | -------- | ---- | 20 | | 工单创建(对象创建时) |SELECT UserRequest WHERE title LIKE '服务器登录权限申请-Server IDs%'| SCRIPT_NAME=accountRequest_create.php ID=$this->ref$ | 21 | | 工单重开(进入一个状态时)| 过滤条件同上, 状态为 new | 同上 | 22 | | 工单完成(进入一个状态时)| 过滤条件同上, 状态为 resolved | SCRIPT_NAME=update_accounts.php ID=$this->ref$ | 23 | | use_pam更新(对象更新时)|tracked attributes: use_pam |SCRIPT_NAME=update_accounts_fromLnk.php ID=$this->id$| 24 | | Server lnkContact新增(对象创建时)| SELECT lnkContactToFunctionalCI WHERE functionalci_id_finalclass_recall='Server'|SCRIPT_NAME=update_accounts_fromLnk.php ID=$this->functionalci_id$ | 25 | | Server lnkContact删除(对象删除时)|同上|同上| 26 | 27 | -------------------------------------------------------------------------------- /custom-pages/en.dict.custom-pages.php: -------------------------------------------------------------------------------- 1 | 'Batch Query', 12 | 'UI:BatchQuery:SelectClass' => 'Select Query Class', 13 | 'UI:BatchQuery:Values' => '', 14 | 'Menu:BatchQueriesMenu' => 'Batch Query', 15 | 'Menu:BatchQueriesMenu+' => 'Batch Query', 16 | 'Menu:WelcomeBatchQuery' => 'Batch Query', 17 | 18 | 'UI:ServerAccount:Title' => 'Server Account', 19 | 'UI:ServerAccount:ServerYouCanLogin' => 'Server You Can Login', 20 | 'UI:ServerAccount:ServerYouManaged' => 'Server You Managed', 21 | 'UI:ServerAccount:Help' => 'Visit Help', 22 | 'Menu:ServerAccountMenu' => 'Server Account', 23 | 'Menu:ServerAccountMenu+' => 'Server Account', 24 | 'Menu:WelcomeServerAccount' => 'Server Account', 25 | 26 | )); 27 | 28 | ?> 29 | -------------------------------------------------------------------------------- /custom-pages/images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/custom-pages/images/error.png -------------------------------------------------------------------------------- /custom-pages/images/lnkusertoserver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/custom-pages/images/lnkusertoserver.png -------------------------------------------------------------------------------- /custom-pages/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/custom-pages/images/right.gif -------------------------------------------------------------------------------- /custom-pages/main.custom-pages.php: -------------------------------------------------------------------------------- 1 | Get('app_root_url')); 30 | if(isset($_SESSION['auth_user'])) { 31 | $location = $rootUrl . "env-production/custom-pages/verify_user.php"; 32 | if(!isset($_SESSION['verify_user'])) { 33 | $_SESSION['verify_user'] = 0; 34 | header("Location: $location"); 35 | } 36 | 37 | if(isset($_SESSION['verify_user']) && $_SESSION['verify_user'] != 1) { 38 | $re = '/pages\/UI\.php\?operation=modify&class=Person&id=[0-9]+|.*\/verify_user\.php.*|pages\/logoff\.php.*/i'; 39 | if(!preg_match($re, $_SERVER['REQUEST_URI'])) 40 | { 41 | header("Location: $location"); 42 | } 43 | } 44 | } else { 45 | unset($_SESSION['verify_user']); 46 | } 47 | -------------------------------------------------------------------------------- /custom-pages/model.custom-pages.php: -------------------------------------------------------------------------------- 1 | 'Custom Pages', 13 | 'category' => 'business', 14 | 15 | // Setup 16 | // 17 | 'dependencies' => array( 18 | 'itop-request-mgmt/2.0.0||itop-request-mgmt-itil/2.0.0', 19 | 'itop-config-mgmt/2.2.0', 20 | 'itop-request-template/1.0.1', 21 | 'templates-base/2.1.4', 22 | 'api-client/1.0.0' 23 | ), 24 | 'mandatory' => false, 25 | 'visible' => true, 26 | 27 | // Components 28 | // 29 | 'datamodel' => array( 30 | 'model.custom-pages.php', 31 | 'main.custom-pages.php', 32 | ), 33 | 'webservice' => array( 34 | 35 | ), 36 | 'data.struct' => array( 37 | // add your 'structure' definition XML files here, 38 | ), 39 | 'data.sample' => array( 40 | // add your sample data XML files here, 41 | ), 42 | 43 | // Documentation 44 | // 45 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 46 | 'doc.more_information' => '', // hyperlink to more information, if any 47 | 48 | // Default settings 49 | // 50 | 'settings' => array( 51 | // Module specific settings go here, if any 52 | 'helplink' => 'http://localhost', 53 | 'ip_regexp' => '^\\\s*(([0-9]{1,3}\\.){3}[0-9]{1,3}[\\\n,\\\s]*)*\\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}[\\\n,\\\s]*$', 54 | 'ticket_title' => '服务器登录权限申请-Server IDs: ', 55 | 'service_id' => '1', 56 | 'user_expiration_day' => 3, 57 | 'ak' => 'reset#user#pwd#default*ak' 58 | ), 59 | ) 60 | ); 61 | 62 | 63 | ?> 64 | -------------------------------------------------------------------------------- /custom-pages/preview/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/custom-pages/preview/account.png -------------------------------------------------------------------------------- /custom-pages/preview/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/custom-pages/preview/preview.png -------------------------------------------------------------------------------- /custom-pages/zh.dict.custom-pages.php: -------------------------------------------------------------------------------- 1 | '批量查询', 14 | 'UI:BatchQuery:SelectClass' => '选择查询的类型', 15 | 'UI:BatchQuery:Values' => '每行一个值', 16 | 'Menu:BatchQueriesMenu' => '批量查询', 17 | 'Menu:BatchQueriesMenu+' => '批量查询', 18 | 'Menu:WelcomeBatchQuery' => '批量查询', 19 | 20 | 'UI:ServerAccount:Title' => '服务器账号', 21 | 'UI:ServerAccount:ServerYouCanLogin' => '我能登录的服务器列表', 22 | 'UI:ServerAccount:ServerYouManaged' => '我是管理员的服务器列表', 23 | 'UI:ServerAccount:MyTicket' => '我的账号申请工单', 24 | 'UI:ServerAccount:Help' => '点此查看帮助', 25 | 'UI:ServerAccount:Create' => '提交账号申请工单', 26 | 'Menu:ServerAccountMenu' => '服务器账号', 27 | 'Menu:ServerAccountMenu+' => '服务器账号', 28 | 'Menu:WelcomeServerAccount' => '服务器账号', 29 | 30 | 'UI:PersonVerification:Title' => '用户资料验证', 31 | 'Menu:PersonVerificationMenu' => '用户资料验证', 32 | 'Menu:PersonVerificationMenu+' => '用户资料验证', 33 | 34 | 'UI:ServerAccount:AreyousureResetpwd' => '确定重置服务器登录密码?', 35 | 'UI:ServerAccount:ResetPWD' => '重置服务器登录密码', 36 | 37 | )); 38 | 39 | // lnkUserToServer 40 | Dict::Add('ZH CN', 'Chinese', '简体中文', array( 41 | 'Class:lnkUserToServer' => '服务器账号', 42 | 'Class:lnkUserToServer/Attribute:server_id' => '服务器', 43 | 'Class:lnkUserToServer/Attribute:user_id' => '用户账号', 44 | 'Class:lnkUserToServer/Attribute:sudo' => 'Sudo权限', 45 | 'Class:lnkUserToServer/Attribute:status' => '账号状态', 46 | 'Class:lnkUserToServer/Attribute:status/Value:enabled' => '已审核', 47 | 'Class:lnkUserToServer/Attribute:status/Value:disabled' => '未审核', 48 | 'Class:lnkUserToServer/Attribute:expiration' => '过期时间', 49 | 'Class:lnkUserToServer/Error:ThisLnkAlreadyExists' => '此账号已存在,请直接编辑', 50 | )); 51 | 52 | ?> 53 | -------------------------------------------------------------------------------- /email-reply/data.struct.ta-actions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Notification to caller on User Request public log update 5 | This action informs a caller that the public log of a ticket has been updated 6 | test 7 | test@test.com 8 | test@test.com 9 | 10 | SELECT Person WHERE id=:this->caller_id 11 | 12 | 13 | The ticket $this->ref$ has been updated 14 | <html> 15 | <body> 16 | $this->head_html(public_log)$ 17 | </body> 18 | </html> 19 | normal 20 | 21 | 22 | -------------------------------------------------------------------------------- /email-reply/data.struct.ta-links.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | 50 6 | 1 7 | 8 | 9 | -------------------------------------------------------------------------------- /email-reply/data.struct.ta-triggers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | User Request public log update 6 | UserRequest 7 | public_log 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /email-reply/de.dict.email-reply.php: -------------------------------------------------------------------------------- 1 | 21 | * @author Romain Quetiez 22 | * @author Denis Flaven 23 | * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL 24 | */ 25 | 26 | // 27 | // Class: TriggerOnLogUpdate 28 | // 29 | 30 | Dict::Add('DE DE', 'German', 'Deutsch', array( 31 | 'Class:TriggerOnLogUpdate' => 'Trigger (wenn ein Log aktualisiert wird)', 32 | 'Class:TriggerOnLogUpdate+' => 'Trigger auf ein Update eines Logs durch einen Endbenutzer', 33 | 'Class:TriggerOnLogUpdate/Attribute:target_log' => 'Attributname des Logs', 34 | 'Class:TriggerOnLogUpdate/Attribute:target_log+' => 'Bezeichnet das zu berücksictigende log (z.B. public_log)', 35 | 36 | 'UI-emry-enable' => 'Send the reply by email~~', 37 | 'UI-emry-noattachment' => 'Kein Attachment', 38 | 'UI-emry-caselog-prompt' => 'Type your text here~~', 39 | 'UI-emry-select-attachments' => 'Select Attachments...~~', 40 | 'UI-emry-attachments-to-be-sent' => 'The following attachments will be sent:~~', 41 | 'UI-emry-select-attachments-tooltip' => 'Click to select the attachments to be sent~~', 42 | )); 43 | 44 | -------------------------------------------------------------------------------- /email-reply/en.dict.email-reply.php: -------------------------------------------------------------------------------- 1 | 21 | * @author Romain Quetiez 22 | * @author Denis Flaven 23 | * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL 24 | */ 25 | 26 | // 27 | // Class: TriggerOnLogUpdate 28 | // 29 | 30 | Dict::Add('EN US', 'English', 'English', array( 31 | 'Class:TriggerOnLogUpdate' => 'Trigger (when log is updated)', 32 | 'Class:TriggerOnLogUpdate+' => 'Trigger on a end-user\'s update in log', 33 | 'Class:TriggerOnLogUpdate/Attribute:target_log' => 'Log attribute code', 34 | 'Class:TriggerOnLogUpdate/Attribute:target_log+' => 'Identifies which log will be considered', 35 | 36 | 'UI-emry-enable' => 'Send the reply by email', 37 | 'UI-emry-noattachment' => 'No attachment', 38 | 'UI-emry-caselog-prompt' => 'Type your text here', 39 | 'UI-emry-select-attachments' => 'Select Attachments...', 40 | 'UI-emry-attachments-to-be-sent' => 'The following attachments will be sent:', 41 | 'UI-emry-select-attachments-tooltip' => 'Click to select the attachments to be sent', 42 | )); 43 | 44 | -------------------------------------------------------------------------------- /email-reply/fr.dict.email-reply.php: -------------------------------------------------------------------------------- 1 | 21 | * @author Romain Quetiez 22 | * @author Denis Flaven 23 | * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL 24 | */ 25 | 26 | // 27 | // Class: TriggerOnLogUpdate 28 | // 29 | 30 | Dict::Add('FR FR', 'French', 'Français', array( 31 | 'Class:TriggerOnLogUpdate' => 'Déclencheur sur mise à jour du journal', 32 | 'Class:TriggerOnLogUpdate+' => 'Déclencheur sur mise à jour du journal', 33 | 'Class:TriggerOnLogUpdate/Attribute:target_log' => 'Code du journal', 34 | 'Class:TriggerOnLogUpdate/Attribute:target_log+' => 'Code de l\'attribut du journal concerné', 35 | 36 | 'UI-emry-enable' => 'Envoyer votre réponse par Email', 37 | 'UI-emry-noattachment' => 'Aucun attachement', 38 | 'UI-emry-caselog-prompt' => 'Entrez votre texte ici', 39 | 'UI-emry-select-attachments' => 'Pièces jointes...', 40 | 'UI-emry-attachments-to-be-sent' => 'Les pièces jointes suivantes seront envoyées:', 41 | 'UI-emry-select-attachments-tooltip' => 'Cliquez pour choisir les pièces jointes à envoyer', 42 | )); 43 | -------------------------------------------------------------------------------- /email-reply/module.email-reply.php: -------------------------------------------------------------------------------- 1 | 'Send Ticket Log Updates by Email', 24 | 'category' => 'business', 25 | 26 | // Setup 27 | // 28 | 'dependencies' => array( 29 | 'itop-request-mgmt-itil/2.0.0||itop-request-mgmt/1.0.0||itop-incident-mgmt-itil//1.0.0', // Actually needed for the sample data 30 | ), 31 | 'mandatory' => false, 32 | 'visible' => true, 33 | 34 | // Components 35 | // 36 | 'datamodel' => array( 37 | 'main.email-reply.php' 38 | ), 39 | 'webservice' => array( 40 | 41 | ), 42 | 'data.struct' => array( 43 | 'data.struct.ta-actions.xml', 44 | 'data.struct.ta-triggers.xml', 45 | 'data.struct.ta-links.xml', 46 | 47 | ), 48 | 'data.sample' => array( 49 | // add your sample data XML files here, 50 | ), 51 | 52 | // Documentation 53 | // 54 | 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any 55 | 'doc.more_information' => '', // hyperlink to more information, if any 56 | 57 | // Default settings 58 | // 59 | 'settings' => array( 60 | 'enabled_default' => true, 61 | ), 62 | ) 63 | ); 64 | 65 | 66 | ?> 67 | -------------------------------------------------------------------------------- /email-reply/paper_clip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ops-itop/itop-extensions/43240f671b8a82e5535dad4588893f0d3ff813de/email-reply/paper_clip.png -------------------------------------------------------------------------------- /getclass.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | grep "class id=" datamodel.itop-config-mgmt.xml -n |tr ':' '"' |awk -F '"' '{print $1,$3}'> info.log 4 | 5 | awk '{print $1}' info.log >1.log 6 | awk '{print $2}' info.log >2.log 7 | 8 | sed -i '1d' 1.log 9 | sed -i '$d' 2.log 10 | paste 1.log 2.log >info2.log 11 | 12 | paste info.log info2.log |awk '{print $1,$3,$2}'>info3.log 13 | 14 | while read line;do 15 | start=`echo $line |awk '{print $1}'` 16 | end=`echo $line |awk '{print $2}'` 17 | echo $end |grep '[a-z]' && end="8000" 18 | name=`echo $line |awk '{print $NF}'` 19 | 20 | awk -v start=$start -v end=$end '{if(NR>=start && NR$name-class.xml 21 | done 'Clone...', 12 | 'object-copier:form_label:default' => 'Cloning %1$s', 13 | 'object-copier:report_label:default' => 'Cloned from %1$s', 14 | 15 | 'object-copier:error:preset' => 'An error has been encountered while presetting the object to create: %1$s. Please contact your administrator.', 16 | 'object-copier:error:retrofit' => 'An error has been encountered while retrofitting some information back to the source object: %1$s. Please contact your administrator.', 17 | )); 18 | -------------------------------------------------------------------------------- /itop-object-copier/es_cr.dict.itop-object-copier.php: -------------------------------------------------------------------------------- 1 | 'Clonar...', 12 | 'object-copier:form_label:default' => 'Clonando %1$s', 13 | 'object-copier:report_label:default' => 'Clonado de %1$s', 14 | 15 | 'object-copier:error:preset' => 'Ocurrio un error mientras presentaba objeto a crear: %1$s. Por favor contacte al admistrador.', 16 | 'object-copier:error:retrofit' => 'Ocurrio un error mientras retroalimentaba alguna información de regreso al objeto origen: %1$s. Por favor contacte al administrador.', 17 | )); 18 | -------------------------------------------------------------------------------- /itop-object-copier/extension.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | combodo-user-actions-configurator 4 | Combodo SARL 5 | 6 | 7 | 8 | 1.2.1 9 | 2018-06-26 10 | 11 | 12 | stable 13 | false 14 | 15 | 16 | -------------------------------------------------------------------------------- /itop-object-copier/fr.dict.itop-object-copier.php: -------------------------------------------------------------------------------- 1 | 'Cloner...', 12 | 'object-copier:form_label:default' => 'Clonage de %1$s', 13 | 'object-copier:report_label:default' => 'Cloné depuis %1$s', 14 | 15 | 'object-copier:error:preset' => 'An error has been encountered while presetting the object to create: %1$s. Please contact your administrator.', 16 | 'object-copier:error:retrofit' => 'An error has been encountered while retrofitting some information back to the source object: %1$s. Please contact your administrator.', 17 | )); 18 | -------------------------------------------------------------------------------- /itop-request-template-modify/display_control.js: -------------------------------------------------------------------------------- 1 | $().ready(function(){ 2 | var mode = $(".modal-body").find("form").attr('id'); 3 | var index = mode.indexOf('objectform-ticket-create-'); 4 | if(index < 0) 5 | { 6 | return; 7 | } 8 | $("div[data-field-id='request_template_ip_textarea']").attr("style", "display:none"); 9 | displayTipsButton(); 10 | displayTips(); 11 | }); 12 | 13 | function displayList() 14 | { 15 | $("#le_server_accounts_request").attr("style", "display:block"); 16 | $("div[data-field-id=request_template_ip_textarea]").attr("style", "display:none"); 17 | } 18 | function displayTextarea() 19 | { 20 | $("#le_server_accounts_request").attr("style", "display:none"); 21 | $("div[data-field-id=request_template_ip_textarea]").attr("style", "display:block"); 22 | } 23 | 24 | function displayTipsButton() 25 | { 26 | var button = '