{"id":1235,"date":"2024-03-13T10:31:02","date_gmt":"2024-03-13T09:31:02","guid":{"rendered":"https:\/\/contecon.de\/picapportwiki\/?page_id=1235"},"modified":"2024-05-21T15:46:34","modified_gmt":"2024-05-21T13:46:34","slug":"add-on-type-procedure-pagp","status":"publish","type":"page","link":"https:\/\/contecon.de\/picapportwiki\/add-on-type-procedure-pagp\/","title":{"rendered":"Add-on type: Procedure (pagp)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1235\" class=\"elementor elementor-1235\">\n\t\t\t\t<div class=\"elementor-element elementor-element-944f429 e-flex e-con-boxed e-con e-parent\" data-id=\"944f429\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e229400 elementor-widget elementor-widget-heading\" data-id=\"e229400\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Add-on type: Procedure (pagp)<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c7c96d elementor-widget elementor-widget-heading\" data-id=\"4c7c96d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">General<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36107da elementor-widget elementor-widget-text-editor\" data-id=\"36107da\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>A <em><strong>Procedure<\/strong><\/em> provides a PicApport user with a certain number of actions for a number of selected photos. Examples for such actions are:<\/p><ul><li>Special reports based on metadata of the selected images<br \/><br \/><\/li><li>Automatic tagging<br \/><br \/><\/li><li>Upload photos to web services<br \/><br \/><\/li><li>File operations on the selected photos (modify, copy etc.)<br \/><br \/><\/li><li>Creation of maps etc.<\/li><\/ul><p>A procedure can provide the user with an input form to enter parameters. It is also possible to link certain actions to user permissions. The individual actions are declared as a Map together with their parameters in the <strong><em>init()<\/em><\/strong> method.<\/p><p>A groovy script is recognized as a <em><strong>Procedure<\/strong><\/em> if it extends the class: <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFileProcessor.html\" rel=\"nofollow\">de.contecon.picapport.groovy.PhotoFileProcessor<\/a><\/p><p>See also\u00a0<a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFileProcessor.html\" rel=\"nofollow\">de.contecon.picapport.groovy.PhotoFileProcessor<\/a> for the methods that can be overwritten to create your own Procedure.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66431ec elementor-widget elementor-widget-heading\" data-id=\"66431ec\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Updating<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1683f07 elementor-widget elementor-widget-text-editor\" data-id=\"1683f07\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>When a Procedure has been updated it will automatically be reloaded and compiled when:<\/p><ul><li>When the PicApport Server starts<\/li><li>Before execution<\/li><li>When the <em><strong>reloadaddons<\/strong> <\/em>console command is executed<\/li><\/ul><p>If components of the web interface or menu etc. change during development, the web interface must be reloaded to make these changes visible after the Add-on has been reloaded.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9bc7798 elementor-widget elementor-widget-heading\" data-id=\"9bc7798\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">The init() Method<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e04bbb elementor-widget elementor-widget-text-editor\" data-id=\"4e04bbb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The init() method of a <em><strong>Procedure<\/strong> <\/em>must return a Map which defines the metadata of the <em><strong>Procedure:<\/strong><\/em><\/p><div class=\"table-wrap\"><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><colgroup> <col \/> <col \/> <col \/> <col \/><\/colgroup><thead><\/thead><\/table><\/div><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>version<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\">Version information<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><p><em><strong>functions<\/strong><\/em><\/p><\/td><td class=\"confluenceTd\">List of Function-Key-Value pairs<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>A list of at least one function or action that is provided by this Add-on. A function must have a unique id for this Add-on\u00a0 (<em><strong>f1<\/strong><\/em> in the example below). A Function has the following paramaters<\/p><div class=\"table-wrap\">\u00a0<\/div><\/td><\/tr><\/tbody><\/table><table class=\"wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>name<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\">Name of this function that should be displayed in the menue.<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>desc<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">yes<\/td><td class=\"confluenceTd\" colspan=\"1\">Optional description<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><p><em><strong>permission<\/strong><\/em><\/p><\/td><td class=\"confluenceTd\" colspan=\"1\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">yes<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>PicApport permission required to execute this function.<\/p><p>See\u00a0<a href=\"https:\/\/contecon.de\/picapportwiki\/picapport-usermanagement\/\">PicApport \u2013 Usermanagement \u2013 PicApport Wiki (contecon.de)<\/a>\u00a0for valid <em><strong>pap:*<\/strong><\/em> permissions.<\/p><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>parameter<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">Optional List of<br \/>Parameter-Key-Value<br \/>pairs<\/td><td class=\"confluenceTd\" colspan=\"1\">yes<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>An optional\u00a0 list of parameters for this function. A parameter must have a unique id inside this function.<\/p><div class=\"table-wrap\">\u00a0<\/div><\/td><\/tr><\/tbody><\/table><div class=\"table-wrap\"><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><div class=\"table-wrap\"><table class=\"wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><div class=\"table-wrap\"><table class=\"wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>type<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>The following types are supported:<\/p><ul><li><em><strong>text<\/strong><\/em><br \/>Simple text input<\/li><li><strong><em>checkbox<\/em><\/strong><br \/>A checkbox<\/li><li><em><strong>select<\/strong><\/em><br \/>Option list to select from<\/li><li><em><strong>range<\/strong><\/em><br \/>A range slider<\/li><\/ul><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>label<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\">Label for this parameter<\/td><td class=\"confluenceTd\" colspan=\"1\">Label with i18n support<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>min<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">String <br \/>(Integer number coded as a String)<\/td><td class=\"confluenceTd\" colspan=\"1\">only required for type=<strong><em>range<\/em><\/strong><\/td><td class=\"confluenceTd\" colspan=\"1\">Minimum integer value<br \/>(coded as a String)<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>max<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">String<br \/>(Integer number coded as a String)<\/td><td class=\"confluenceTd\" colspan=\"1\">only required for type=<strong><em>range<\/em><\/strong><\/td><td class=\"confluenceTd\" colspan=\"1\"><p>Maximum integer value<br \/>(coded as a String)<\/p><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>options<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">String[] array<\/td><td class=\"confluenceTd\" colspan=\"1\">only required for type=<strong><em>select<\/em><\/strong><\/td><td class=\"confluenceTd\" colspan=\"1\">An array of String values to select from<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>value<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\"><ul><li><em><strong>boolean<\/strong> <\/em>for type = <em><strong>select<\/strong><\/em><\/li><li>All other types: <em><strong>String<\/strong><\/em><\/li><\/ul><\/td><td class=\"confluenceTd\" colspan=\"1\">yes<\/td><td class=\"confluenceTd\" colspan=\"1\">Default Value<\/td><\/tr><\/tbody><\/table><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>i18n<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">Key\/Value pairs<\/td><td class=\"confluenceTd\" colspan=\"1\">yes<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>Optional key\/value pairs for translation.<\/p><p><u><em><strong>Function keys:<\/strong><\/em><\/u><\/p><p>[isoLanguage].[functionId].name \u2192 Translation of Function-name<br \/>[isoLanguage].[functionId].desc \u2192 Translation of Function-description<\/p><p><u><strong><em>Parameter keys:<\/em><\/strong><\/u><\/p><p>[isoLanguage].[functionId].[paramaterId].[parameterOption]<\/p><p>see example below<\/p><\/td><\/tr><\/tbody><\/table><\/div><h3 id=\"Add-ontype:Procedure(pagp)-Exampleofaninit()Methodwithi18nsupport\">Example of an <em>init()<\/em> Method with i18n support<\/h3><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_952177\" class=\"syntaxhighlighter sh-confluence nogutter groovy\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">ADDON_TYPE_ID = <\/code><code class=\"groovy string\">\"osm.org\"<\/code><code class=\"groovy plain\">;\u00a0 <\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number3 index2 alt2\"><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">en_Title =<\/code><code class=\"groovy string\">'OpenStreetMap (OSM) Reverse geocoding'<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">de_Title =<\/code><code class=\"groovy string\">'OpenStreetMap (OSM) Inverse Geokodierung'<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number6 index5 alt1\"><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">en_Options=[<\/code><code class=\"groovy string\">'Write only when empty'<\/code><code class=\"groovy plain\">,\u00a0 <\/code><code class=\"groovy string\">'Always overwrite'<\/code><code class=\"groovy plain\">,\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'no Changes (just test)'<\/code><code class=\"groovy plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'Remove OpenStreetMap metadata'<\/code><code class=\"groovy plain\">,\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'Show OpenStreetMap metadata of photos'<\/code><code class=\"groovy plain\">];<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">de_Options=[<\/code><code class=\"groovy string\">'Schreibe nur wenn leer'<\/code><code class=\"groovy plain\">, <\/code><code class=\"groovy string\">'Immer \u00fcberschreiben'<\/code><code class=\"groovy plain\">, <\/code><code class=\"groovy string\">'keine \u00c4nderungen (nur testen)'<\/code><code class=\"groovy plain\">, <\/code><code class=\"groovy string\">'OpenStreetMap Metadaten entfernen'<\/code><code class=\"groovy plain\">, <\/code><code class=\"groovy string\">'OpenStreetMap Daten der Fotos anzeigen'<\/code><code class=\"groovy plain\">];<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number9 index8 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number10 index9 alt1\"><code class=\"groovy keyword\">public<\/code> <code class=\"groovy plain\">Map init(IAddonContext addonContext) {<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addonContext.getLogger().logMessage(<\/code><code class=\"groovy string\">\" Addon loaded Autor: E. Schreiner (c)2020 Contecon Software GmbH\"<\/code> <code class=\"groovy plain\">);<\/code><\/div><div class=\"line number12 index11 alt1\">\u00a0<\/div><div class=\"line number13 index12 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">meta =\u00a0 [<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">version:<\/code><code class=\"groovy string\">'1.0.0'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">functions: [<\/code><\/div><div class=\"line number16 index15 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">f1: [<\/code><\/div><div class=\"line number17 index16 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">name:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 en_Title,<\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">desc:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'Converts geographic coordinates (latitude, longitude)\\nto a readable address or place name'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number19 index18 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">permission: <\/code><code class=\"groovy string\">'pap:editmeta:photo'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number21 index20 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">parameter: [<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">mode: [<\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0 <\/code><code class=\"groovy string\">'select'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number24 index23 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">label:\u00a0 <\/code><code class=\"groovy string\">'Overwrite'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">options: en_Options,<\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">value:\u00a0\u00a0 <\/code><code class=\"groovy string\">'0'<\/code><\/div><div class=\"line number27 index26 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number28 index27 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">language: [<\/code><\/div><div class=\"line number29 index28 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type: <\/code><code class=\"groovy string\">'text'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number30 index29 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">label: <\/code><code class=\"groovy string\">'language'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number31 index30 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">value: System.getProperty(<\/code><code class=\"groovy string\">\"user.language\"<\/code><code class=\"groovy plain\">)<\/code><\/div><div class=\"line number32 index31 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number33 index32 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">analyseResult: [<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type: <\/code><code class=\"groovy string\">'checkbox'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">label: <\/code><code class=\"groovy string\">'Analyse result'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">value: false <\/code><\/div><div class=\"line number37 index36 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]<\/code><\/div><div class=\"line number38 index37 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number40 index39 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">i18n: [<\/code><\/div><div class=\"line number42 index41 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.name'<\/code><code class=\"groovy plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 de_Title,<\/code><\/div><div class=\"line number43 index42 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.desc'<\/code><code class=\"groovy plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'Mittels Geokoordinaten werden textuelle Lokationsangaben gesucht,\\nalso etwa St\u00e4dtenamen, Stra\u00dfennamen, etc...'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.mode.label'<\/code><code class=\"groovy plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'\u00dcberschreiben'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.mode.options'<\/code><code class=\"groovy plain\">:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 de_Options,<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.language.label'<\/code><code class=\"groovy plain\">:\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">'Sprache'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy string\">'de.f1.analyseResult.label'<\/code><code class=\"groovy plain\">:<\/code><code class=\"groovy string\">'Analysiere Ergebnis'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number48 index47 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]<\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70d8ba8 elementor-widget elementor-widget-heading\" data-id=\"70d8ba8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Sample Implementation of a Procedure<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-697854f elementor-widget elementor-widget-text-editor\" data-id=\"697854f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>See&nbsp;<a href=\"https:\/\/contecon.de\/picapportwiki\/picapport-add-on-groovyprocedurestesttool-2\/\">PicApport Add-on: GroovyProceduresTestTool \u2013 PicApport Wiki (contecon.de)<\/a>&nbsp;which contains a download-URL for our sample implementation of a Procedure<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2bfb700 e-flex e-con-boxed e-con e-parent\" data-id=\"2bfb700\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Add-on type: Procedure (pagp) General A Procedure provides a PicApport user with a certain number of actions for a number of selected photos. Examples for such actions are: Special reports based on metadata of the selected images Automatic tagging Upload photos to web services File operations on the selected photos (modify, copy etc.) Creation of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1235","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/comments?post=1235"}],"version-history":[{"count":7,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1235\/revisions"}],"predecessor-version":[{"id":2054,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1235\/revisions\/2054"}],"wp:attachment":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/media?parent=1235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}