├── ProcessHello.css
├── ProcessHello.info.php
├── ProcessHello.js
├── ProcessHello.module.php
├── README.md
├── extras
└── ProcessHello.config.php
├── languages
├── de.csv
└── es.csv
└── views
├── execute.php
└── something-else.php
/ProcessHello.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This optional CSS file is only loaded when the ProcessHello module is run
3 | *
4 | * Remove it if you have no CSS styles to add.
5 | *
6 | */
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ProcessHello.info.php:
--------------------------------------------------------------------------------
1 | Refresh before you see them.
14 | *
15 | */
16 |
17 | $info = array(
18 |
19 | // Your module's title
20 | 'title' => 'Hello: Process Module Example',
21 |
22 | // A 1 sentence description of what your module does
23 | 'summary' => 'A starting point module skeleton from which to build your own Process module.',
24 |
25 | // Module version number (integer)
26 | 'version' => 2,
27 |
28 | // Name of person who created this module (change to your name)
29 | 'author' => 'Ryan Cramer',
30 |
31 | // Icon to accompany this module (optional), uses font-awesome icon names, minus the "fa-" part
32 | 'icon' => 'thumbs-up',
33 |
34 | // Indicate any requirements as CSV string or array containing [RequiredModuleName][Operator][Version]
35 | 'requires' => 'ProcessWire>=3.0.164',
36 |
37 | // URL to more info: change to your full modules.processwire.com URL (if available), or something else if you prefer
38 | 'href' => 'https://processwire.com/modules/process-hello/',
39 |
40 | // name of permission required of users to execute this Process (optional)
41 | 'permission' => 'helloworld',
42 |
43 | // permissions that you want automatically installed/uninstalled with this module (name => description)
44 | 'permissions' => array(
45 | 'helloworld' => 'Run the HelloWorld module'
46 | ),
47 |
48 | // page that you want created to execute this module
49 | 'page' => array(
50 | 'name' => 'helloworld',
51 | 'parent' => 'setup',
52 | 'title' => 'Hello World'
53 | ),
54 |
55 | // optional extra navigation that appears in admin drop down menus
56 | 'nav' => array(
57 | array(
58 | 'url' => '',
59 | 'label' => 'Hello',
60 | 'icon' => 'smile-o',
61 | ),
62 | array(
63 | 'url' => 'something/',
64 | 'label' => 'Something',
65 | 'icon' => 'beer',
66 | ),
67 | array(
68 | 'url' => 'something-else/',
69 | 'label' => 'Something Else',
70 | 'icon' => 'glass',
71 | ),
72 | array(
73 | 'url' => 'form/',
74 | 'label' => 'Simple form',
75 | 'icon' => 'building',
76 | ),
77 | )
78 |
79 | // for more options that you may specify here, see the file: /wire/core/Process.php
80 | // and the file: /wire/core/Module.php
81 |
82 | );
83 |
--------------------------------------------------------------------------------
/ProcessHello.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This JS file is only loaded when the ProcessHello module is run
3 | *
4 | * You should delete it if you have no javascript to add.
5 | *
6 | */
7 |
8 | jQuery(document).ready(function($) {
9 | // do something
10 | });
11 |
--------------------------------------------------------------------------------
/ProcessHello.module.php:
--------------------------------------------------------------------------------
1 | set('greeting', 'Happy hello world to you');
26 | $this->set('greetingType', 'message');
27 | }
28 |
29 | /**
30 | * This is an optional initialization function called before any execute functions.
31 | *
32 | * If you don't need to do any initialization common to every execution of this module,
33 | * you can simply remove this init() method.
34 | *
35 | */
36 | public function init() {
37 | parent::init(); // always remember to call the parent init
38 | }
39 |
40 | /**
41 | * This method is executed when a page with your Process assigned is accessed.
42 | *
43 | * This can be seen as your main or index function. You'll probably want to replace
44 | * everything in this function.
45 | *
46 | * Return value is typically direct HTML markup. But it can also be an associative
47 | * array of variables to pass to a view file named either 'ProcessHello.view.php'
48 | * or 'views/execute.php' (demonstrated here).
49 | *
50 | * @return string|array
51 | *
52 | */
53 | public function ___execute() {
54 |
55 | if($this->greetingType == 'error') {
56 | $this->error($this->greeting);
57 | } else if($this->greetingType == 'warning') {
58 | $this->warning($this->greeting);
59 | } else {
60 | $this->message($this->greeting);
61 | }
62 |
63 | // send variable(s) to the view file
64 | return [
65 | 'subhead' => $this->_('What do you want to do today?'),
66 | 'actions' => [
67 | './something/' => $this->_('Something'),
68 | './something-else/' => $this->_('Something else'),
69 | './form/' => $this->_('Simple form'),
70 | ]
71 | ];
72 | }
73 |
74 | /**
75 | * Called when the URL is this module’s page URL + "/something/"
76 | *
77 | * For this method, we are demonstrate returning markup directly, without
78 | * using a separate view file (this is much more common).
79 | *
80 | * @return string|array
81 | *
82 | */
83 | public function ___executeSomething() {
84 |
85 | // Set a new headline, replacing the one used by our page.
86 | // This is optional as PW will auto-generate a headline.
87 | $this->headline($this->_('This is something'));
88 |
89 | // Add a breadcrumb that returns to our main page .
90 | // This is optional as PW will auto-generate breadcrumbs
91 | $this->breadcrumb('../', $this->_('Hello'));
92 |
93 | // example values we will include in our output
94 | $users = $this->users->find('sort=name, limit=50');
95 |
96 | // Demonstrates using markup (string) as the return value,
97 | // rather than a separate view file.
98 | return
99 | "
" . sprintf($this->_('Your system has %d users'), $users->getTotal()) . "
" .
100 | "" . $users->each("- {name}
") . "
";
101 | }
102 |
103 | /**
104 | * Handles the ./something-else/ URL
105 | *
106 | * In this case we are again using a separate view file, like we did
107 | * in the execute() method. The view can be named any of the following
108 | * (your choice):
109 | *
110 | * 1. views/something-else.php (this is the one we're using)
111 | * 2. views/execute-something-else.php
112 | * 3. ProcessHello-something-else.php
113 | *
114 | * @return string|array
115 | *
116 | */
117 | public function ___executeSomethingElse() {
118 |
119 | $pages = $this->wire()->pages;
120 |
121 | $this->headline($this->_('This is something else!'));
122 | $this->message(sprintf($this->_('There are %d pages in this site'), $pages->count()));
123 |
124 | // send variables to our something-else.php view file:
125 | return [
126 | 'subhead' => $this->_('Here are the last 10 created pages:'),
127 | 'newPages' => $pages->find("sort=-created, limit=10"),
128 | ];
129 | }
130 |
131 | /**
132 | * Handles the ./form/ URL
133 | *
134 | * This is a simple example of creating and processing a form that
135 | * uses ProcessWire’s Inputfield modules.
136 | *
137 | * @return string
138 | *
139 | */
140 | public function ___executeForm() {
141 |
142 | $modules = $this->wire()->modules;
143 | $input = $this->wire()->input;
144 |
145 | $this->headline($this->_('Here is a simple form')); // the headline
146 | $this->browserTitle($this->_('Simple form example')); // The tag
147 |
148 | /** @var InputfieldForm $form */
149 | $form = $modules->get('InputfieldForm');
150 | $form->description = $this->_('Please fill this out and submit');
151 |
152 | /** @var InputfieldText $field */
153 | $field = $modules->get('InputfieldText');
154 | $field->attr('name', 'notice_text');
155 | $field->label = $this->_('Text to display in a notification');
156 | $field->icon = 'file-text-o';
157 | $field->required = true;
158 | $form->add($field);
159 |
160 | /** @var InputfieldSubmit $submit */
161 | $submit = $modules->get('InputfieldSubmit');
162 | $submit->attr('name', 'submit_now');
163 | $submit->val($this->_('Submit now'));
164 | $submit->icon = 'smile-o';
165 | $submit->addActionValue('exit', $this->_('Submit and exit'), 'frown-o'); // after-submit actions
166 | $submit->addActionValue('pages', $this->_('Submit and go to page list'), 'meh-o');
167 | $form->add($submit);
168 |
169 | // check if form has been submitted
170 | if($input->post($submit->name)) $this->processForm($form);
171 |
172 | return $form->render();
173 | }
174 |
175 | /**
176 | * Process an Inputfields form and respond to requested submit action
177 | *
178 | * @param InputfieldForm $form
179 | *
180 | */
181 | protected function processForm(InputfieldForm $form) {
182 |
183 | $input = $this->wire()->input;
184 | $session = $this->wire()->session;
185 | $config = $this->wire()->config;
186 |
187 | // process the form
188 | $form->processInput($input->post);
189 |
190 | // return now if form had errors
191 | if(count($form->getErrors())) return;
192 |
193 | // no errors: display notification with user’s entered text
194 | $value = $form->getChildByName('notice_text')->val();
195 | $this->message($this->_('Your notification text') . " - $value");
196 |
197 | /** @var InputfieldSubmit $submit */
198 | $submit = $form->getChildByName('submit_now');
199 |
200 | // user selected: submit and exit
201 | if($submit->submitValue === 'exit') $session->redirect('../');
202 |
203 | // user selected: submit and go to page list
204 | if($submit->submitValue === 'pages') $session->redirect($config->urls->admin);
205 | }
206 |
207 |
208 | /**
209 | * Called only when your module is installed
210 | *
211 | * If you don't need anything here, you can simply remove this method.
212 | *
213 | */
214 | public function ___install() {
215 | parent::___install(); // Process modules must call parent method
216 | }
217 |
218 | /**
219 | * Called only when your module is uninstalled
220 | *
221 | * This should return the site to the same state it was in before the module was installed.
222 | *
223 | * If you don't need anything here, you can simply remove this method.
224 | *
225 | */
226 | public function ___uninstall() {
227 | parent::___uninstall(); // Process modules must call parent method
228 | }
229 |
230 | /**
231 | * Get module configuration inputs
232 | *
233 | * As an alternative, configuration can also be specified in an external file
234 | * with a PHP array. See an example in the /extras/ProcessHello.config.php file.
235 | *
236 | * @param InputfieldWrapper $inputfields
237 | *
238 | */
239 | public function getModuleConfigInputfields(InputfieldWrapper $inputfields) {
240 | $modules = $this->wire()->modules;
241 |
242 | /** @var InputfieldText $f */
243 | $f = $modules->get('InputfieldText');
244 | $f->attr('name', 'greeting');
245 | $f->label = $this->_('Hello greeting');
246 | $f->description = $this->_('What would you like to say to people using this module?');
247 | $f->attr('value', $this->greeting);
248 | $inputfields->add($f);
249 |
250 | /** @var InputfieldRadios $f */
251 | $f = $modules->get('InputfieldRadios');
252 | $f->attr('name', 'greetingType');
253 | $f->label = $this->_('Greeting type');
254 | $f->addOption('message', $this->_('Message'));
255 | $f->addOption('warning', $this->_('Warning'));
256 | $f->addOption('error', $this->_('Error'));
257 | $f->optionColumns = 1; // make it display options on 1 line
258 | $f->notes = $this->_('Choose wisely'); // like description but appears under field
259 | $f->attr('value', $this->greetingType);
260 | $inputfields->add($f);
261 | }
262 |
263 | }
264 |
265 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # “Hello World” Process Module for ProcessWire
2 |
3 | A starting point skeleton from which to build your own Process module.
4 | Process modules are used primarily for building admin applications and tools
5 | in ProcessWire. This module also creates a page in the ProcessWire admin to
6 | run itself from. Requires ProcessWire 3.x.
7 |
8 | ## What this modules demonstrates
9 |
10 | This module demonstrates everything you would need to create a Process module.
11 | It also demonstrates many things that you may not need, but things that are
12 | still good to know about.
13 |
14 | - How to create an index `execute()` method that are called for your Process
15 | module’s main/index URL.
16 | - How to create `executeMethodName()` methods that are automatically called
17 | when URL segment matches `method-name/`.
18 | - How to return markup from your URL handling methods directly.
19 | - How to use separate markup “view” files your URL handling methods.
20 | - How to create message, warning and error notifications in the admin.
21 | - How to set the admin headline, breadcrumbs and browser `` tag.
22 | - How to define drop-down navigation for your Process module.
23 | - How to create and process a simple form that uses Inputfield modules.
24 | - How to provide additional submit actions in the form submit button.
25 | - How to make the Process module configurable.
26 | - How to provide multi-language translations for the module.
27 | - And more…
28 |
29 |
30 | ## How to install this module
31 |
32 | 1. Copy all of the module files to `/site/modules/ProcessHello/`.
33 |
34 | 2. In your admin, go to Modules > Refresh.
35 |
36 | 3. Click “Install” for the “Process > Hello” module (on the “Site” tab).
37 |
38 |
39 | ## How to test this module
40 |
41 | 1. Configure the module from the module configuration screen and Save.
42 |
43 | 3. Click to Setup > Hello.
44 |
45 | 4. After testing it, open the `.module.php` file in your editor and
46 | see how it works. Use it as a starting point for your own Process module.
47 |
48 | *If in a multi-language environment running ProcessWire 3.0.181 or newer,
49 | see the “install translations” link in the “Module Information” fieldset,
50 | when on the module configuration screen. Here you can optionally install
51 | other language translations for the module.*
52 |
53 |
54 | ## How to use this to make your own Process module
55 |
56 | To see exactly what this module does, you may want to install it as-is first.
57 | Then uninstall and follow the instructions below.
58 |
59 | 1. Rename the `ProcessHello.module.php` file to be `ProcessModuleName.module.php`,
60 | replacing the `ModuleName` portion with your module/class name you wish to use.
61 |
62 | 2. In the `.module.php` file change the class name at the top to be to be
63 | `ProcessModuleName`, again replacing the `ModuleName` portion with your own.
64 |
65 | 3. Edit the `ProcessModuleName.module.php` file to do what you want. In addition:
66 |
67 | - Remove and/or repurpose methods you don’t need.
68 | - Remove the `/extras/` dir as it only is there for extra examples.
69 | - If you don’t want to use separate view files, you can remove the `/views/` dir.
70 | - If you don’t want to bundle languages you can remove the `/languages/` dir.
71 |
72 | 4. If your module needs its own CSS and/or JS files, rename those included to be the same as
73 | your module name and modify them to do whatever you want. If your module does NOT need
74 | CSS and/or JS files then delete them.
75 |
76 | 5. Rename the `ProcessHello.info.php` file to `ProcessModuleName.info.php` and edit it,
77 | updating it specific to your module and information.
78 |
79 | 6. If you DO want your module to be configurable:
80 |
81 | - Update the `getModuleConfigInputfields()` method at the botton of the module file.
82 | - Update the `$this->set('property', 'value')` statements in the `__construct()`
83 | method to specify your default configuration values.
84 | - Update the phpdoc comments above the class to document your configuration properties.
85 |
86 | *Note: If you prefer a separate configuration file, see the example and instructions in the
87 | `/extras/ProcessHello.config.php` file rather than the steps above.*
88 |
89 | 7. If you DO NOT want your module to be configurable:
90 |
91 | - Remove the `ConfigurableModule` interface/text from the module’s class definition.
92 | - Remove the `getModuleConfigInputfields()` method at the bottom of the module file.
93 | - Remove the `$this->set('property', 'value')` statements from the `__construct()` method.
94 | If that leaves the method blank (other than the parent call) you can just remove the
95 | method construct entirely.
96 | - Remove the phpdoc comments at the top of the class referring to configuration variables.
97 |
98 | 8. If you do want to bundle translations of your module for other languages see the section
99 | after this one.
100 |
101 | 9. Update this README.md file to contain information specific to your module.
102 |
103 | When you've got something you'd like to share, post your module to GitHub and to
104 | the ProcessWire modules directory at: `.
105 |
106 |
107 | ## Bundling multi-language translations with your module
108 |
109 | This requires ProcessWire 3.0.181+ and that you have multi-language support installed.
110 |
111 | - Locate the files you want to translate from your admin: Setup > Languages >
112 | language > Site files > Find files to translate. Select the file(s) and submit.
113 | ProcessWire will generate new empty `.json` files for the files you selected to
114 | translate.
115 |
116 | - In Setup > Languages > language, click the "edit" link for file(s) added for
117 | your module. Translate the text into the desired language and save. Near the top
118 | of the translation screen is a link to "Download a CSV file". Click that to save
119 | the CSV file of translations.
120 |
121 | - Copy the CSV file(s) you downloaded in the previous step into a `/languages/`
122 | directory in your module’s path. For instance `/site/modules/ProcessHello/languages/`
123 | is the one you'll see with this module. While not required, I recommend naming
124 | your files with the ISO-639-1 language code. For instance, German would be
125 | `de.csv`, Spanish would be `es.csv`, Finnish would be `fi.csv`, etc.
126 |
127 | - If your module has multiple translatable files, you can bundle all the translations
128 | into a single CSV file (just copy and paste into one), or you can have multiple
129 | `.csv` files for each language. For instance, if this module had both
130 | `Helloworld.module` and `ProcessHelloworld.module` files, we might choose to name our
131 | csv files `es-main.csv` and `es-process.csv`. Or we could just have an `es.csv`
132 | file that merges that translations from both of them.
133 |
134 | - In your module’s documentation, instruct the user to install translations from
135 | your module’s info/config screen. It’s in the “Module Information” fieldset
136 | “Languages” row, where there is an “install translations” link. When new versions
137 | of your module also update the translations, make note of that in your changelog
138 | so that users will know to click the “install translations” again to update
139 | the translations.
140 |
141 |
142 | ## Other ProcessWire demo modules by Ryan:
143 |
144 | - Hello World general module demonstration:
145 | - Fieldtype and Inputfield module demonstration:
146 |
147 | Stop by the [ProcessWire forums](https://processwire.com/talk/) anytime and we will be glad
148 | to help with any questions.
149 |
150 | ------
151 | [ProcessWire](https://processwire.com) Copyright 2021 by Ryan Cramer
152 |
153 |
154 |
155 |
--------------------------------------------------------------------------------
/extras/ProcessHello.config.php:
--------------------------------------------------------------------------------
1 | set(...) calls in the __construct() method of the module file.
14 | *
15 | */
16 |
17 | $config = [
18 | // Text field: greeting
19 | 'greeting' => [
20 | 'type' => 'text', // type of field (any Inputfield module name)
21 | 'label' => __('Hello Greeting'), // field label
22 | 'description' => __('What would you like to say to people using this module?'),
23 | 'required' => true,
24 | 'value' => __('A very happy hello world to you.'), // default value
25 | ],
26 |
27 | // Radio buttons: greetingType
28 | 'greetingType' => [
29 | 'type' => 'radios',
30 | 'label' => __('Greeting Type'),
31 | 'options' => [
32 | // options array of value => label
33 | 'message' => __('Message'),
34 | 'warning' => __('Warning'),
35 | 'error' => __('Error'),
36 | ],
37 | 'value' => 'warning', // default value
38 | 'optionColumns' => 1, // make options display on one line
39 | 'notes' => __('Choose wisely'), // like description but appears under field
40 | ]
41 | ];
42 |
--------------------------------------------------------------------------------
/languages/de.csv:
--------------------------------------------------------------------------------
1 | en,de,description,file,hash
2 | "What do you want to do today?","Was willst Du heute machen?",,site/modules/ProcessHello/ProcessHello.module.php,7fee16fad9f38b1729454ce94ca3c7b2
3 | Something,Etwas,,site/modules/ProcessHello/ProcessHello.module.php,73f9977556584a369800e775b48f3dbe
4 | "Something else","Etwas anderes",,site/modules/ProcessHello/ProcessHello.module.php,bf086eb471716d6e62b731268d06807d
5 | "Simple form","Einfache Form",,site/modules/ProcessHello/ProcessHello.module.php,e3679dc84f9d6931e09488a7c52c8815
6 | "This is something","Das ist etwas",,site/modules/ProcessHello/ProcessHello.module.php,a2ddd156f3c1267455edd51407fb6e62
7 | Hello,Hallo,,site/modules/ProcessHello/ProcessHello.module.php,8b1a9953c4611296a827abf8c47804d7
8 | "Your system has %d users","Ihr System hat %d Benutzer",,site/modules/ProcessHello/ProcessHello.module.php,264ba2a8e101571c519a9b1caeb24a71
9 | "This is something else!","Das ist etwas anderes!",,site/modules/ProcessHello/ProcessHello.module.php,aae56b6966ff8e4a12e2fc5c7598d5c0
10 | "There are %d pages in this site","Es gibt %d Seiten auf dieser Site",,site/modules/ProcessHello/ProcessHello.module.php,b11a5d947f20ec730b927da7761ee998
11 | "Here are the last 10 created pages:","Hier sind die letzten 10 erstellten Seiten:",,site/modules/ProcessHello/ProcessHello.module.php,f6027c2b38901f5589683c94cd94441c
12 | "Here is a simple form","Hier ist ein einfaches Formular","the headline",site/modules/ProcessHello/ProcessHello.module.php,a41ef3b4257d7587595cb19999be692f
13 | "Simple form example","Einfaches Formularbeispiel","The tag",site/modules/ProcessHello/ProcessHello.module.php,f9ab6477b5602fd9dbd9f74145162a3f
14 | "Please fill this out and submit","Bitte ausfüllen und absenden",,site/modules/ProcessHello/ProcessHello.module.php,6e81d468def9d2595367b8f9a86511bd
15 | "Text to display in a notification","Text, der in einer Benachrichtigung angezeigt werden soll",,site/modules/ProcessHello/ProcessHello.module.php,43e656eecbd70ec8e7fb2dbf2dcf5035
16 | "Submit now","Jetzt Absenden",,site/modules/ProcessHello/ProcessHello.module.php,f4c6249c1ee4f56d258f0df42d53b5d6
17 | "Submit and exit","Abschicken und beenden","after-submit actions",site/modules/ProcessHello/ProcessHello.module.php,ea1aa9759098b06b3390767525016f3d
18 | "Submit and go to page list","Absenden und zur Seitenliste gehen",,site/modules/ProcessHello/ProcessHello.module.php,77c4dfe2c81738c5be7016bc6fbc2e36
19 | "Your notification text","Ihr Benachrichtigungstext",,site/modules/ProcessHello/ProcessHello.module.php,164d6bc93c69ffb92c864d0075a89194
20 | "Hello greeting",Gruß,,site/modules/ProcessHello/ProcessHello.module.php,d45a185f39ebf2d9c038c79319c4862a
21 | "What would you like to say to people using this module?","Was möchten Sie den Nutzern dieses Moduls sagen?",,site/modules/ProcessHello/ProcessHello.module.php,3140300e109e122fe267a7866f3c2d81
22 | "Greeting type",Begrüßungstyp,,site/modules/ProcessHello/ProcessHello.module.php,b372ad4948d8265b4ca3796845eb2248
23 | Message,Botschaft,,site/modules/ProcessHello/ProcessHello.module.php,4c2a8fe7eaf24721cc7a9f0175115bd4
24 | Warning,Warnung,,site/modules/ProcessHello/ProcessHello.module.php,0eaadb4fcb48a0a0ed7bc9868be9fbaa
25 | Error,=,,site/modules/ProcessHello/ProcessHello.module.php,902b0d55fddef6f8d651fe1035b7d4bd
26 | "Choose wisely","Wähle mit Bedacht","like description but appears under field",site/modules/ProcessHello/ProcessHello.module.php,10a0bec7ff2c573bc34c97cfe5e76a6a
--------------------------------------------------------------------------------
/languages/es.csv:
--------------------------------------------------------------------------------
1 | en,es,description,file,hash
2 | "What do you want to do today?","¿Qué quieres hacer hoy?",,site/modules/ProcessHello/ProcessHello.module.php,7fee16fad9f38b1729454ce94ca3c7b2
3 | Something,"Alguna cosa",,site/modules/ProcessHello/ProcessHello.module.php,73f9977556584a369800e775b48f3dbe
4 | "Something else","Algo más",,site/modules/ProcessHello/ProcessHello.module.php,bf086eb471716d6e62b731268d06807d
5 | "Simple form","Forma simple",,site/modules/ProcessHello/ProcessHello.module.php,e3679dc84f9d6931e09488a7c52c8815
6 | "This is something","Esto es algo",,site/modules/ProcessHello/ProcessHello.module.php,a2ddd156f3c1267455edd51407fb6e62
7 | Hello,Hola,,site/modules/ProcessHello/ProcessHello.module.php,8b1a9953c4611296a827abf8c47804d7
8 | "Your system has %d users","Su sistema tiene %d usuarios",,site/modules/ProcessHello/ProcessHello.module.php,264ba2a8e101571c519a9b1caeb24a71
9 | "This is something else!","¡Esto es otra cosa!",,site/modules/ProcessHello/ProcessHello.module.php,aae56b6966ff8e4a12e2fc5c7598d5c0
10 | "There are %d pages in this site","aquí hay %d páginas en este sitio",,site/modules/ProcessHello/ProcessHello.module.php,b11a5d947f20ec730b927da7761ee998
11 | "Here are the last 10 created pages:","Aquí están las últimas 10 páginas creadas:",,site/modules/ProcessHello/ProcessHello.module.php,f6027c2b38901f5589683c94cd94441c
12 | "Here is a simple form","Aquí hay un formulario simple","the headline",site/modules/ProcessHello/ProcessHello.module.php,a41ef3b4257d7587595cb19999be692f
13 | "Simple form example","Ejemplo de forma simple","The tag",site/modules/ProcessHello/ProcessHello.module.php,f9ab6477b5602fd9dbd9f74145162a3f
14 | "Please fill this out and submit","Por favor complete esto y envíelo",,site/modules/ProcessHello/ProcessHello.module.php,6e81d468def9d2595367b8f9a86511bd
15 | "Text to display in a notification","Texto para mostrar en una notificación",,site/modules/ProcessHello/ProcessHello.module.php,43e656eecbd70ec8e7fb2dbf2dcf5035
16 | "Submit now","Aplique ahora",,site/modules/ProcessHello/ProcessHello.module.php,f4c6249c1ee4f56d258f0df42d53b5d6
17 | "Submit and exit","Enviar y salir","after-submit actions",site/modules/ProcessHello/ProcessHello.module.php,ea1aa9759098b06b3390767525016f3d
18 | "Submit and go to page list","Enviar e ir a la lista de páginas",,site/modules/ProcessHello/ProcessHello.module.php,77c4dfe2c81738c5be7016bc6fbc2e36
19 | "Your notification text","Su texto de notificación",,site/modules/ProcessHello/ProcessHello.module.php,164d6bc93c69ffb92c864d0075a89194
20 | "Hello greeting",Saludo,,site/modules/ProcessHello/ProcessHello.module.php,d45a185f39ebf2d9c038c79319c4862a
21 | "What would you like to say to people using this module?","¿Qué le gustaría decirles a las personas que utilizan este módulo?",,site/modules/ProcessHello/ProcessHello.module.php,3140300e109e122fe267a7866f3c2d81
22 | "Greeting type","Tipo de saludo",,site/modules/ProcessHello/ProcessHello.module.php,b372ad4948d8265b4ca3796845eb2248
23 | Message,Mensaje,,site/modules/ProcessHello/ProcessHello.module.php,4c2a8fe7eaf24721cc7a9f0175115bd4
24 | Warning,Advertencia,,site/modules/ProcessHello/ProcessHello.module.php,0eaadb4fcb48a0a0ed7bc9868be9fbaa
25 | Error,=,,site/modules/ProcessHello/ProcessHello.module.php,902b0d55fddef6f8d651fe1035b7d4bd
26 | "Choose wisely","Elegir sabiamente","like description but appears under field",site/modules/ProcessHello/ProcessHello.module.php,10a0bec7ff2c573bc34c97cfe5e76a6a
--------------------------------------------------------------------------------
/views/execute.php:
--------------------------------------------------------------------------------
1 |
5 | =$subhead?>
6 |
--------------------------------------------------------------------------------
/views/something-else.php:
--------------------------------------------------------------------------------
1 |
5 | =$subhead?>
6 |
9 |
--------------------------------------------------------------------------------