Skip to content

Commit

Permalink
add form errors to login page
Browse files Browse the repository at this point in the history
  • Loading branch information
rmarianski committed Nov 2, 2012
1 parent 89cb4ae commit cce5041
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 0 deletions.
16 changes: 16 additions & 0 deletions resources/public/css/docphoto.css
Expand Up @@ -169,6 +169,22 @@ a:hover {
float: none;
}

.uniForm .form-errors {
padding: 10px;
border: 2px solid red;
}
.uniForm .form-errors p {
color: red;
font-weight: bold;
}
.uniForm .form-errors ul {
float: none;
}
.uniForm .form-errors li span {
color: red;
font-weight: bold;
}

/**
* style specific
*/
Expand Down
17 changes: 17 additions & 0 deletions src/docphoto/core.clj
Expand Up @@ -578,6 +578,14 @@
(defn logout [request]
(session/delete request))

;; move to form maybe?
(defn error-map->errors-list [errors-map field-name->field-label]
(for [[field-name error-msg] errors-map
:let [field-label (field-name->field-label field-name)]
:when field-label]
{:label field-label
:msg error-msg}))

(defformpage login-view []
[(req-textfield :userName__c :username)
(req-password :password__c :password)
Expand All @@ -588,6 +596,15 @@
(list
[:form.uniForm {:method :post :action (login-link)}
[:h2 (i18n/translate :login)]
(when (seq errors)
(when-let [errors-list (error-map->errors-list errors field->label)]
[:div.form-errors
[:p (i18n/translate :there-were-errors)]
[:ul
(for [{:keys [label msg]} errors-list]
[:li
(str (i18n/translate label) ": ")
[:span (i18n/translate msg)]])]]))
[:fieldset
(when-let [user (session/get-user request)]
[:p ((i18n/translate :already-logged-in) (:name user))])
Expand Down
9 changes: 9 additions & 0 deletions src/docphoto/form.clj
Expand Up @@ -132,6 +132,14 @@
`(fn [~'params ~'errors]
~form-render-body))

(defn make-field-label-mapping [fieldspecs]
(into
{}
(for [fieldspec fieldspecs
:let [{[_ _ field-id {label :label}] :field} fieldspec]
:when (and field-id label)]
[field-id label])))

(defmacro defformpage
"Should write a lot of documentation here. Especially on anaphora. And what's expected. Fieldspecs need to be documented too. The fact that the body parameters need to be single forms too."
[fn-name args fieldspecs form-render-body success-body]
Expand All @@ -140,6 +148,7 @@
~'validate-fields ~(make-validator-fn fieldspecs)]
(defn ~fn-name [~'request ~@args]
(let [~'params (:params ~'request)
~'field->label ~(make-field-label-mapping fieldspecs)
~'render-form ~(make-form-render-fn form-render-body)]
(onpost
(if-let [~'errors (~'validate-fields ~'params)]
Expand Down
4 changes: 4 additions & 0 deletions src/docphoto/i18n.clj
Expand Up @@ -177,6 +177,10 @@ To reset your password, please click on the following link:
"Before submitting your application, please correct the following:"
"Перед подачей заявки, пожалуйста, исправьте следующие:"

:there-were-errors
"There were errors. Please correct:"
"Были ошибки. Пожалуйста, исправьте:"

:application-review "Application Review" "Обзор приложений"
:review-application-before-submitting
"Review your application before submitting."
Expand Down

0 comments on commit cce5041

Please sign in to comment.