Eric Lippmann
9060e8a034
lib: Only call Icinga::app()->getRequest() for getting the request outside of a controller
...
Saves a call to getFrontController().
refs #9660
2015-07-30 14:02:44 +02:00
Eric Lippmann
9aa1599a18
Form: Disable CSRF counter measure only on API requests
...
refs #9660
2015-07-30 12:04:22 +02:00
Eric Lippmann
db505281ee
lib: Disable CSRF token on HTTP authenticated users and not XHR
...
refs #9660
2015-07-30 09:33:04 +02:00
Eric Lippmann
07849e0fea
lib: Rename Authentication/Manager to Authentication/Auth
...
refs #9660
2015-07-28 17:08:55 +02:00
Johannes Meyer
86ad6c48ff
Form: Automatically remove query parameters only for GET forms
...
refs #9421
2015-07-27 08:52:33 +02:00
Johannes Meyer
cecd94be50
Merge branch 'master' into feature/support-for-file-uploads-8758
2015-07-22 08:47:24 +02:00
Johannes Meyer
c0de2e6ee3
Form: Add missing use statement for the ProgrammingError exception
2015-07-22 08:39:24 +02:00
Johannes Meyer
8f2849f32a
Form: Improve code readability..
...
..and avoid the necessity to provide another mock when testing
Form::handleRequest().
refs #8758
2015-07-21 16:48:56 +02:00
Johannes Meyer
7c89887773
Form: Provide an absolute url as redirect url for successful frame uploads
...
refs #8758
2015-07-21 16:35:56 +02:00
Johannes Meyer
6c9819204d
Form: Only work with a single type when handling redirect urls
...
$form->setRedirectUrl('some/url') still works, but $form->getRedirectUrl()
will only return instances of Icinga\Web\Url now.
2015-07-21 16:33:24 +02:00
Johannes Meyer
fc481e527b
Form: Process request parameter _frameUpload
...
This parameter is being used to flag a request as form submission issued
by utilizing an iframe. Appending it to a form's action causes no redirection
to take place in case of successful submission and a reduced but still valid
layout to be printed in any way. Redirection must be handled by the client
regarding the meta tag "redirectUrl".
refs #8758
2015-07-21 15:22:24 +02:00
Johannes Meyer
0a9a066749
Form: Do not create a new instance of Url when returning the redirect url
...
We're shifting parameters and by creating a new instance we'll lose
such changes.
refs #8758
2015-07-21 15:13:56 +02:00
Johannes Meyer
549f36f82c
Form: Do not create a new instance of Url when setting the action
...
We're shifting parameters and by creating a new instance we'll lose
such changes.
refs #8758
2015-07-16 11:27:02 +02:00
Johannes Meyer
5b908d85bb
Form: Fix notifications
...
* Coding style issues
* Notifications were not grouped by type
* Notifications of sub-forms were overwriting existing ones
(cherry picked from commit 147f6be714
)
2015-07-01 14:26:03 +02:00
Johannes Meyer
d5ba40ac19
Form: Add hint support
...
Hints are short messages displayed at the bottom of a form
used to describe specific aspects on how to interact with
the form.
refs #8983
2015-06-30 15:02:58 +02:00
Johannes Meyer
147f6be714
Form: Fix notifications
...
* Coding style issues
* Notifications were not grouped by type
* Notifications of sub-forms were overwriting existing ones
2015-06-30 14:25:33 +02:00
Johannes Meyer
702a9c9523
Form: Show notifications and errors below any descriptions
...
They might be textually related to one or more descriptions.
refs #8983
2015-06-30 13:22:54 +02:00
Johannes Meyer
ebe144c16a
Form: Do not encode actions twice
2015-06-24 16:15:45 +02:00
Johannes Meyer
24cb6bfc6e
Form: Preserve defaults for subforms as well
2015-06-05 16:01:52 +02:00
Alexander Fuhr
9f35db71bf
Form: Add typed notifications to the form
...
refs #9203
2015-05-15 13:04:01 +02:00
Johannes Meyer
9596b4fdf7
Form: Make it possible to preserve default values during (auto)submission
2015-04-07 15:07:36 +02:00
Alexander Klimov
967a2e82dc
Use (only) "@return $this" in fluent interfaces' documentation
2015-04-07 14:24:11 +02:00
Eric Lippmann
200982e4f5
Set form action automatically only if Form::setAction() has not been called
...
refs #8605
2015-03-13 03:59:43 +01:00
Eric Lippmann
8563d5ed3f
PHPDoc: Use @var instead of @type
...
Becasue of too many kittens PSR-5 backed off of deprecating @var.
So that's the way we go too.
2015-03-12 16:08:47 +01:00
Johannes Meyer
6cfa958bb8
Allow setting `requirement' on form elements
...
It's supposed to be used as description what
kind of value an element will accept.
refs #7947
2015-03-06 08:53:34 +01:00
Johannes Meyer
b9811f8590
Form: Do not set the requiredSuffix as option but use its virtual setter
...
This removes the invalid attribute on each <label> tag once the
FormDescriptions decorator removes the suffix.
refs #7947
2015-03-05 15:13:38 +01:00
Johannes Meyer
b8eedc21bb
Form: Explicitly set subform decorators
...
refs #7947
2015-03-05 15:12:02 +01:00
Johannes Meyer
ff263946c8
Form: Fix translation domain detection while running unit tests
2015-03-04 09:38:00 +01:00
Johannes Meyer
e2887df03e
Form: It's a field, not a control
2015-03-03 15:01:09 +01:00
Johannes Meyer
747e51553e
Allow the Autosubmit decorator being used on forms as well
...
refs #7935
2015-03-03 13:33:26 +01:00
Johannes Meyer
642fa44fce
Move a form's title into the markup of its form
2015-03-03 09:53:25 +01:00
Johannes Meyer
b1d0c12df3
Form: Introduce setTitle() as alias for Zend_Form::setDescription()
2015-03-02 18:40:46 +01:00
Johannes Meyer
ad288c08ca
Form: Add the Description decorator by default for native title support
2015-03-02 18:40:46 +01:00
Johannes Meyer
1a334f8d64
Add decorator FormDescriptions
...
This decorator displays a list of messages at the top of a form.
refs #7947
2015-03-02 13:45:24 +01:00
Johannes Meyer
96c132908d
Provide a warning on autosubmit form elements and a title for the apply btn
...
resolves #7935
2015-02-27 13:09:13 +01:00
Johannes Meyer
c00e336ea8
Make the cue that is being appended to required form elements configurable
...
refs #7934
2015-02-27 09:08:05 +01:00
Johannes Meyer
48c3199a2d
Form: Fix id protection
...
Altering element ids upon rendering makes it impossible to reference
them elsewhere. Zend_Form::getId() should be preferred over getName()
as it falls automatically back to getName() in case there is no id attribute
set. Setter are required to return their instance. Overwriting methods
without calling the parent (getId) without any valid (or at least
documented) reason is very bad practice.
refs #8460
2015-02-27 09:01:46 +01:00
Johannes Meyer
6d81a194ab
Make form element descriptions accessible
...
Re-added the Help decorator to make sure an element's description
is being added in an accessible way.
2015-02-27 08:10:25 +01:00
Johannes Meyer
0111fdf78e
Add an asterisk suffix to a form element's label if its required
...
The screen reader part "(required)" is not being considered with this
commit as most screen readers do not need this due to the ARIA and
HTML5 property.
resolves #7934
2015-02-26 16:05:13 +01:00
Matthias Jentsch
89451f3086
Ensure that form ids are unique
...
Add an unique prefix to each Form- or FormElement id, unless id protection is disabled explicitly, to prevent id collisions between different containers.
fixes #8460
2015-02-25 18:00:28 +01:00
Johannes Meyer
9e933d835d
Add Icinga\Web\Form\ErrorLabeller
...
refs #8415
2015-02-12 09:11:03 +01:00
Johannes Meyer
eb3063e36d
Form: Add prefix path for custom form validators
...
refs #8415
2015-02-12 09:11:02 +01:00
Johannes Meyer
c5b6d7ee41
Ensure that all required form elements are marked as such in HTML markup
...
refs #8349
2015-02-05 13:15:18 +01:00
Eric Lippmann
6bae2e0a53
Note that our license is GPL v2 or any later version in our license header instead of pointing to the license's URL
2015-02-04 10:52:27 +01:00
Eric Lippmann
5b4fab0750
Add license header
...
This time without syntax errors hopefully :)
2015-02-03 16:27:59 +01:00
Eric Lippmann
5fa2e3cfdc
Revert "Add license header"
...
This reverts commit 338d067aba
.
2015-02-03 16:16:26 +01:00
Eric Lippmann
338d067aba
Add license header
...
fixes #7788
2015-02-03 15:51:04 +01:00
Eric Lippmann
df29dd0e7c
Implement Form::hasPermission() and Form::getPermission()
2015-01-30 09:35:01 +01:00
Johannes Meyer
94d727dbb8
Fix error in Icinga\Web\Form in case the label decorator is missing
...
Zend_Form::getDecorator() returns false instead of null in case the
decorator is not found.
2015-01-22 09:21:50 +01:00
Eric Lippmann
50bbf77d0c
Fix module domain detection in Form::getTranslationDomain()
...
The usage of preg_replace had two errors:
1) The regular expression was wrong
2) $matches[0] always contains the full matched string, not the first parenthesized subpattern
The correct version of preg_replace would've been:
if (preg_match('/^Icinga\\\\Module\\\\([A-Za-z]+)\\\\/', get_called_class(), $matches) === 1) {
return strtolower($matches[1]);
}
But since there's no benefit of using a regular expression here except less speed, I replaced it
with using explode.
refs #7551
2014-12-30 10:08:33 +01:00
Johannes Meyer
6d263ae316
Do NOT fetch the translation domain from the request in Form::translate(..)
...
It might be the case that a module is using a library form...
refs #7551
2014-12-19 13:07:51 +01:00
Johannes Meyer
cf43b81400
Use the class namespace instead of the request in Form::translate(Plural)
...
refs #7551
2014-12-19 12:08:54 +01:00
Johannes Meyer
e5d2d4cec2
Add module-aware Form::translate and Form::translatePlural
...
refs #7551
2014-12-19 11:29:24 +01:00
Eric Lippmann
4dfac28393
lib: Fix PHPDoc of Form::setOnSuccess()
2014-12-18 17:21:06 +01:00
Eric Lippmann
bb664a87ea
Fix ugly positioning of help icons
...
If an element has a description, the description is now added to the element's label as title.
The CSS class has-feedback ensurers that the help icon is rendererd. If everything is working fine,
I'll the remove the super duper Help decorator.
2014-11-20 13:25:58 +01:00
Eric Lippmann
aef81a56d6
Merge branch 'master' into feature/security-gui-5647
...
Conflicts:
library/Icinga/Application/Config.php
library/Icinga/File/Ini/IniWriter.php
library/Icinga/Web/Form.php
library/Icinga/Web/Menu.php
2014-11-18 17:08:25 +01:00
Johannes Meyer
1cbdd2b51c
Fix that hidden elements are getting ovewritten when validating a form
...
This works by "disabling" hidden elements which causes the browser not
to submit them. Due to a bug in Zend we need to manually ensure that
Form::isValid does not overwrite the value of disabled elements with null.
fixes #7717
2014-11-18 15:06:46 +01:00
Johannes Meyer
760bf1a020
Disable partial validation of forms by default
2014-11-18 15:06:46 +01:00
Alexander Fuhr
38ef33276a
Replace description decorator through help decorator
...
refs #7696
resolves #7696
2014-11-18 14:58:54 +01:00
Eric Lippmann
f9d7062476
Form: Add our element and decorator paths instead of calling createIcingaFormElement
...
createIcingaFormElement lacks all stuff applied in Zend_Form::createElement().
2014-11-18 12:51:06 +01:00
Johannes Meyer
ddf2ef5cc9
Remove $request parameter from Form::onSuccess and Form::onRequest
...
fixes #7552
2014-11-14 14:59:29 +01:00
Johannes Meyer
872dce2208
Prefer form elements of Icinga\Web\Form\Element in Form::createElement
2014-11-14 10:15:27 +01:00
Johannes Meyer
62aacce469
Place the noscript button next to the element it is supposed to apply
2014-11-12 10:48:52 +01:00
Eric Lippmann
d2eddcbec6
Introduce Form::setOnSuccess() in favor of overriding the constructor
...
Zend_Form uses setters for options if a respective setter method exists.
It is not necessary to override the constructor for introducing new options.
2014-11-04 16:15:06 +01:00
Eric Lippmann
ea1f51ad9a
Use callable as type hint instead of Callback
...
PHP 5.4 introduces callable for type hinting and PSR-5 proposes callable.
2014-10-31 15:59:45 +01:00
Johannes Meyer
d1ea7e87a2
Improve form styling slightly
2014-10-15 15:46:07 +02:00
Eric Lippmann
cc61dc2b01
Form: Don't override Zend_Form::setDefaults()
...
fixes #7315
2014-10-08 17:43:28 +02:00
Eric Lippmann
2956d9e342
form: Correctly set our default element decorators
2014-10-06 10:42:24 +02:00
Eric Lippmann
bea110d0c7
Fix `Form::isSubmitted()' for dynamic submit labels
2014-09-19 14:27:04 +02:00
Eric Lippmann
5b5f553d0d
form: Fix dynamic submit label retrieval
2014-09-19 13:39:38 +02:00
Eric Lippmann
3c9859a0f1
Call `Form::getSubmitLabal()' in `Form::addSubmitButton()'
...
This allows us to dynamically define submit labels in form subclasses.
2014-09-19 13:00:15 +02:00
Eric Lippmann
5ba96c32f9
`Form::setDefaults()' fix strict standards violation
...
Declaration of Icinga\Web\Form::setDefaults() should be compatible with that of Zend_Form::setDefaults().
2014-09-19 12:59:01 +02:00
Eric Lippmann
7eb51f6367
form/csrf: Set the csrf element decorators in the element not in the form
2014-09-19 12:57:53 +02:00
Johannes Meyer
e7c021845d
Simplify subform usage
...
refs #5525
2014-09-09 15:00:33 +02:00
Johannes Meyer
f7f6bcc447
Make Form base class more test friendly..
...
refs #5525
2014-09-09 09:31:15 +02:00
Johannes Meyer
c8ce1088c9
Disable checking whether a form is sent when form identification is disabled
...
refs #5525
2014-09-09 09:30:33 +02:00
Johannes Meyer
12b4865559
Fix incompatible declaration of Form::setDefaults()
...
PHP with strict standards: Declaration of Icinga\Web\Form::setDefaults()
should be compatible with that of Zend_Form::setDefaults()
refs #5525
2014-09-08 09:42:02 +02:00
Johannes Meyer
930e6e7d71
We shouldn't require Form::createElements() to return self
...
refs #5525
2014-09-08 09:24:53 +02:00
Johannes Meyer
fc72ddfbc8
Adjust Preferences/GeneralForm to use handleRequest() &. Co.
...
refs #5525
2014-09-05 10:21:24 +02:00
Johannes Meyer
8846f17ae1
Make it possible to disable form identification
...
refs #5525
2014-09-05 09:16:09 +02:00
Johannes Meyer
54a834266c
Form::createElements() should add elements instead of returning them
...
In case createElements() would still return the elements while requiring
the caller to add them to the form all form dependent configurations get
lost. (displaygroups, belongTo, ...) Wizards or parent forms can still
retrieve only input relevant fields by just calling createElements() and
getElements().
refs #5525
2014-09-03 12:21:31 +02:00
Johannes Meyer
95c839a8bd
Remove remaining usages of the ElementWrapper- and HelpText-Decorator
...
refs #5525
2014-09-02 16:50:59 +02:00
Johannes Meyer
539ab91ffa
Add the FormErrors decorator as default decorator for forms
...
This allows us to use Zend_Form::addError() to show error messages for
the entire form context.
refs #5525
2014-09-02 16:25:03 +02:00
Johannes Meyer
39bb01b433
Rename Icinga\Web\Form::onShow() to onRequest()
...
onShow() is misleading because at the time this method is being called the
form is neither shown nor created.
refs #5525
2014-09-02 16:19:45 +02:00
Eric Lippmann
d4c4ab7b2c
lib/form: Fix default element decorators but breaking noscript layout
...
Replaced `ElementWrapper' and `HelpText' with Zend's `HtmlTag' and `Label' respectively.
Instances of Zend_Form_Element returned by `Form::createElements()' now receive our desired default decorators.
refs #5525
2014-09-02 15:23:07 +02:00
Johannes Meyer
cd8015f41a
Pass the current form instance to the callback as second argument
...
refs #5525
2014-09-01 14:58:16 +02:00
Eric Lippmann
0822aff293
library/form: Fix return value of `getName()' not being filterd the first time it's called
...
`Form::getName()' auto-detects the form's name if it's not set and sets the form's name using `Zend_Form::setName()'.
`Zend_Form::setName()' then filters the form name stripping backslash '\' characters. The first call to `Form::getName()'
did not regard the filtering and thus returned the unfiltered name which led to `Form::wasSent()' returning `false'.
refs #5525
2014-09-01 14:40:45 +02:00
Eric Lippmann
f3e74f0f24
library/form: Append class 'autosubmit' in case the element to autosubmit has the class attribute set
...
Before, the class attribute would've been overwritten.
refs #5525
2014-09-01 09:44:04 +02:00
Johannes Meyer
79b0ed64ec
Make it possible to provide a closure to be called instead of onSuccess()
...
This allows us to write generic forms like the ConfirmRemoval form but to
utilize handleRequest() while providing a closure in the array that is passed
to a form's constructor.
refs #5525
2014-08-29 12:21:31 +02:00
Johannes Meyer
bf23688e73
Make autosubmit work in non-JS enviroments
...
We require forms to set autosubmit=true on elements which are supposed
to be submitted automatically now. The base form then ensures that this
works in JS environments and non-JS environments as well by applying the
right changes to the HTML.
refs #5525
2014-08-29 09:08:53 +02:00
Johannes Meyer
486104d59e
Check explictly for FALSE when calling onSuccess()
...
This allows us to just end onSuccess() without requiring it to return TRUE
to initiate redirection.
refs #5525
2014-08-29 09:04:20 +02:00
Johannes Meyer
e1329058db
Do not hard code the name of the form identification element
...
Like the csrf element name the form identification element name should
be publicly accessible as well.
refs #5525
2014-08-27 13:14:40 +02:00
Johannes Meyer
6783d51f76
A form is "submitted" when it was "sent" but no submit label was set
...
This enables us to use handleRequest() as is when no specific submit button
is required.
refs #5525
2014-08-27 10:28:50 +02:00
Johannes Meyer
0ff79b0948
Replace Form::onFailure() with Form::onShow()
...
There is currently no usecase for onFailure() but for onShow() wherewith
the case is covered when a form needs to be prepared before showing it
to the user while the form was not submitted in any way.
refs #5525
2014-08-27 10:25:50 +02:00
Johannes Meyer
d3c2fc858c
Access formdata internally using a public helper method
...
This way concrete form implementations can also simply fetch form
dependent request values without referring to the form's submission
method.
refs #5525
2014-08-27 10:19:33 +02:00
Johannes Meyer
65dd3f9a5b
Make the form in view scripts accessible using $form instead of $element
...
refs #5525
2014-08-27 10:10:55 +02:00
Johannes Meyer
98b2bce15e
Icinga\Web\Form::onSuccess() must not return TRUE
...
When using Icinga\Web\Form directly without creating a specific sub-class
and calling handleRequest() one must not get redirected.
refs #5525
2014-08-27 10:09:29 +02:00
Johannes Meyer
45cbd3f067
We do not require the request being passed to handleRequest()
...
refs #5525
2014-08-26 12:31:05 +02:00
Johannes Meyer
5c7999fe9b
Forms should be responsible for any redirection as well
...
If no specific url has been set with setRedirectUrl() a form redirects to the
current action it was posted to.
refs #5525
2014-08-26 12:30:37 +02:00
Johannes Meyer
52534a2f46
It is a form's responsibility to process the request it was submitted with
...
How forms are being validated should not be a task that is part of the
controller action, but should be handled by the form base class as it is
most of the time the same procedure. Now a controller action just sets
up the form to use, calls handleRequest() and acts upon its return value.
(e.g. calling handleRequest() from another form or any redirection)
refs #5525
2014-08-25 17:06:45 +02:00