diff --git a/examples/demo/site/themes/bootstrap/page.tpl b/examples/demo/site/themes/bootstrap/page.tpl index 4e584b8..7e1acbc 100644 --- a/examples/demo/site/themes/bootstrap/page.tpl +++ b/examples/demo/site/themes/bootstrap/page.tpl @@ -42,7 +42,7 @@
- +
diff --git a/modules/auth/cms_authentication_module.e b/modules/auth/cms_authentication_module.e index b42e8e2..a1b24bb 100644 --- a/modules/auth/cms_authentication_module.e +++ b/modules/auth/cms_authentication_module.e @@ -271,6 +271,9 @@ feature -- Handler then f.append_to_html (r.wsf_theme, b) end + if attached new_change_profile_name_form (r) as f then + f.append_to_html (r.wsf_theme, b) + end if attached new_change_password_form (r) as f then f.append_to_html (r.wsf_theme, b) end @@ -729,6 +732,24 @@ feature -- Handler f := new_change_email_form (r) r.set_main_content (f.to_html (r.wsf_theme)) end + elseif l_fieldname.is_case_insensitive_equal ("profile_name") then + f := new_change_profile_name_form (r) + f.process (r) + if + attached f.last_data as fd and then + not fd.has_error and then + attached fd.string_item ("new_profile_name") as l_new_profile_name + then + check api.user_api.is_valid_profile_name (l_new_profile_name) end + l_user.set_profile_name (l_new_profile_name) + l_user_api.update_user (l_user) + r.add_success_message ("Profile name updated.") + r.set_redirection ("account/") + r.set_redirection_delay (3) + else + r.add_error_message ("Invalid form data!") + r.set_main_content (f.to_html (r.wsf_theme)) + end elseif l_fieldname.is_case_insensitive_equal ("username") then if api.has_permission ("change own username") then f := new_change_username_form (r) @@ -919,6 +940,35 @@ feature -- Handler fs.extend_html_text ("") end + new_change_profile_name_form (a_response: CMS_RESPONSE): CMS_FORM + local + fs: WSF_FORM_FIELD_SET + txt: WSF_FORM_TEXT_INPUT + do + create Result.make (a_response.url ("account/change/profile_name", Void), "change-profile-name-form") + create fs.make + fs.set_legend ("Change profile name (i.e the name displayed on pages)") + Result.extend (fs) + + create txt.make ("new_profile_name") + txt.set_label ("Profile name") + txt.set_validation_action (agent (fd: WSF_FORM_DATA; api: CMS_API) + do + if + attached fd.string_item ("new_profile_name") as l_new and then + api.user_api.is_valid_profile_name (l_new) + then + -- Ok + else + fd.report_invalid_field ("new_profile_name", "Invalid profile name!") + end + end (?, a_response.api) + ) + txt.enable_required + fs.extend (txt) + fs.extend_html_text ("") + end + new_change_password_form (a_response: CMS_RESPONSE): CMS_FORM local fs: WSF_FORM_FIELD_SET diff --git a/modules/google_search/src/google_custom_search_module.e b/modules/google_search/src/google_custom_search_module.e index 562a52d..8e19576 100644 --- a/modules/google_search/src/google_custom_search_module.e +++ b/modules/google_search/src/google_custom_search_module.e @@ -11,14 +11,9 @@ class inherit CMS_MODULE - redefine - setup_hooks - end CMS_HOOK_BLOCK_HELPER - CMS_HOOK_VALUE_TABLE_ALTER - SHARED_EXECUTION_ENVIRONMENT export {NONE} all @@ -57,30 +52,6 @@ feature -- Router a_router.map (m, a_router.methods_head_get) end -feature -- Hooks configuration - - setup_hooks (a_hooks: CMS_HOOK_CORE_MANAGER) - -- Module hooks configuration. - do - a_hooks.subscribe_to_value_table_alter_hook (Current) - end - - value_table_alter (a_value: CMS_VALUE_TABLE; a_response: CMS_RESPONSE) - -- - local - l_url: STRING - l_url_name: READABLE_STRING_GENERAL - do - if - attached {WSF_STRING} a_response.request.query_parameter ("q") as l_query and then - not l_query.value.is_empty - then - a_value.force (l_query.value, "google_search") - else - a_value.force (Void, "google_search") - end - end - feature -- GCSE Keys gcse_secret_key (api: CMS_API): detachable READABLE_STRING_8 @@ -132,6 +103,7 @@ feature -- Handler attached gcse_cx_key (api) as l_cx and then attached gcse_secret_key (api) as l_key then + r.set_value (l_query.value, "cms_search_query") create l_parameters.make (l_key, l_cx, l_query.url_encoded_value ) if attached {WSF_STRING} req.query_parameter ("start") as l_index and then diff --git a/src/service/user/cms_user_api.e b/src/service/user/cms_user_api.e index 6db7be2..f402a8f 100644 --- a/src/service/user/cms_user_api.e +++ b/src/service/user/cms_user_api.e @@ -42,6 +42,32 @@ feature -- Validation end end + is_valid_profile_name (a_name: READABLE_STRING_32): BOOLEAN + local + c: CHARACTER_32 + do + if a_name.is_empty or a_name.is_whitespace then + Result := False + elseif a_name[1].is_space then + Result := False + elseif a_name[a_name.count].is_space then + Result := False + else + Result := True + across + a_name as ic + until + not Result + loop + c := ic.item + if c.is_alpha_numeric or c = '-' or c = '_' or c.is_space or c = '%'' then + else + Result := False + end + end + end + end + feature -- Access: user user_by_id (a_id: like {CMS_USER}.id): detachable CMS_USER