From dabd5b84b21c711592a1f3bcd2ca298dd6d7fde2 Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Fri, 22 Jan 2010 12:22:31 -0800
Subject: Remove the identity manager screens and controller as alterntive
identity providers are installed in the admin module screen.
---
modules/gallery/controllers/admin_identity.php | 76 --------------------------
1 file changed, 76 deletions(-)
delete mode 100644 modules/gallery/controllers/admin_identity.php
(limited to 'modules/gallery/controllers')
diff --git a/modules/gallery/controllers/admin_identity.php b/modules/gallery/controllers/admin_identity.php
deleted file mode 100644
index 354e6c0c..00000000
--- a/modules/gallery/controllers/admin_identity.php
+++ /dev/null
@@ -1,76 +0,0 @@
-content = new View("admin_identity.html");
- $view->content->available = identity::providers();
- $view->content->active = module::get_var("gallery", "identity_provider", "user");
- print $view;
- }
-
- public function confirm() {
- access::verify_csrf();
-
- $v = new View("admin_identity_confirm.html");
- $v->new_provider = Input::instance()->post("provider");
-
- print $v;
- }
-
- public function change() {
- access::verify_csrf();
-
- $active_provider = module::get_var("gallery", "identity_provider", "user");
- $providers = identity::providers();
- $new_provider = Input::instance()->post("provider");
-
- if ($new_provider != $active_provider) {
-
- module::deactivate($active_provider);
-
- // Switch authentication
- identity::reset();
- module::set_var("gallery", "identity_provider", $new_provider);
-
- module::install($new_provider);
- module::activate($new_provider);
-
- module::event("identity_provider_changed", $active_provider, $new_provider);
-
- module::uninstall($active_provider);
-
- message::success(t("Changed to %description",
- array("description" => $providers->$new_provider)));
-
- try {
- Session::instance()->destroy();
- } catch (Exception $e) {
- // We don't care if there was a problem destroying the session.
- }
- url::redirect(item::root()->abs_url());
- }
-
- message::info(t("The selected provider \"%description\" is already active.",
- array("description" => $providers->$new_provider)));
- url::redirect("admin/identity");
- }
-}
-
--
cgit v1.2.3
From df313cac567bee77f5a73308381fe67dcac9b92c Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Fri, 22 Jan 2010 12:30:17 -0800
Subject: Change the check_environment method in the module helper and the
module installers to can_activate to reflect that it is doing more than just
checking the environment.
---
modules/gallery/controllers/admin_modules.php | 2 +-
modules/gallery/helpers/module.php | 8 ++++----
modules/slideshow/helpers/slideshow_installer.php | 2 +-
modules/user/helpers/user_installer.php | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
(limited to 'modules/gallery/controllers')
diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php
index 46defbef..a2168280 100644
--- a/modules/gallery/controllers/admin_modules.php
+++ b/modules/gallery/controllers/admin_modules.php
@@ -42,7 +42,7 @@ class Admin_Modules_Controller extends Admin_Controller {
if ($info->active && !$desired && module::is_active($module_name)) {
$messages = array_merge($messages, module::can_deactivate($module_name));
} else if (!$info->active && $desired && !module::is_active($module_name)) {
- $messages = array_merge($messages, module::check_environment($module_name));
+ $messages = array_merge($messages, module::can_activate($module_name));
}
}
diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php
index 595f600b..f680ff6a 100644
--- a/modules/gallery/helpers/module.php
+++ b/modules/gallery/helpers/module.php
@@ -120,17 +120,17 @@ class module_Core {
}
/**
- * Check that the module can be installed. (i.e. all the prerequistes exist)
+ * Check that the module can be activated. (i.e. all the prerequistes exist)
* @param string $module_name
* @return array an array of warning or error messages to be displayed
*/
- static function check_environment($module_name) {
+ static function can_activate($module_name) {
module::_add_to_path($module_name);
$messages = array();
$installer_class = "{$module_name}_installer";
- if (method_exists($installer_class, "check_environment")) {
- $messages = call_user_func(array($installer_class, "check_environment"));
+ if (method_exists($installer_class, "can_activate")) {
+ $messages = call_user_func(array($installer_class, "can_activate"));
}
// Remove it from the active path
diff --git a/modules/slideshow/helpers/slideshow_installer.php b/modules/slideshow/helpers/slideshow_installer.php
index 319e2e79..8d612f3e 100644
--- a/modules/slideshow/helpers/slideshow_installer.php
+++ b/modules/slideshow/helpers/slideshow_installer.php
@@ -34,7 +34,7 @@ class slideshow_installer {
site_status::clear("slideshow_needs_rss");
}
- static function check_environment() {
+ static function can_activate() {
$messages = array();
if (!module::is_active("rss")) {
$messages["warn"][] = t("The Slideshow module requires the RSS module.");
diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php
index 3882f5f2..38f8020b 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class user_installer {
- static function check_environment() {
+ static function can_activate() {
return array("warn" => array(IdentityProvider::confirmation_message()));
}
--
cgit v1.2.3
From eabeeeb1267e0c925b5f31b2455a080bc2e9f237 Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Fri, 22 Jan 2010 13:38:05 -0800
Subject: Trap any errors that may occur when trying to install a new identity
provider and then reinstall the current one.
---
modules/gallery/controllers/admin_modules.php | 31 +++++++++++---------
modules/gallery/libraries/IdentityProvider.php | 40 ++++++++++++++++++--------
2 files changed, 45 insertions(+), 26 deletions(-)
(limited to 'modules/gallery/controllers')
diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php
index a2168280..84fee25d 100644
--- a/modules/gallery/controllers/admin_modules.php
+++ b/modules/gallery/controllers/admin_modules.php
@@ -76,21 +76,24 @@ class Admin_Modules_Controller extends Admin_Controller {
continue;
}
- $desired = Input::instance()->post($module_name) == 1;
- if ($info->active && !$desired && module::is_active($module_name)) {
- $changes->deactivate[] = $module_name;
- $deactivated_names[] = t($info->name);
- module::deactivate($module_name);
- } else if (!$info->active && $desired && !module::is_active($module_name)) {
- $changes->activate[] = $module_name;
- $activated_names[] = t($info->name);
-
- if (module::is_installed($module_name)) {
- module::upgrade($module_name);
- } else {
- module::install($module_name);
+ try {
+ $desired = Input::instance()->post($module_name) == 1;
+ if ($info->active && !$desired && module::is_active($module_name)) {
+ module::deactivate($module_name);
+ $changes->deactivate[] = $module_name;
+ $deactivated_names[] = t($info->name);
+ } else if (!$info->active && $desired && !module::is_active($module_name)) {
+ if (module::is_installed($module_name)) {
+ module::upgrade($module_name);
+ } else {
+ module::install($module_name);
+ }
+ module::activate($module_name);
+ $changes->activate[] = $module_name;
+ $activated_names[] = t($info->name);
}
- module::activate($module_name);
+ } catch (Exception $e) {
+ Kohana_Log::add("error", (string)$e);
}
}
diff --git a/modules/gallery/libraries/IdentityProvider.php b/modules/gallery/libraries/IdentityProvider.php
index f7be33e3..e07838d1 100644
--- a/modules/gallery/libraries/IdentityProvider.php
+++ b/modules/gallery/libraries/IdentityProvider.php
@@ -71,19 +71,35 @@ class IdentityProvider_Core {
module::uninstall($current_provider);
}
- IdentityProvider::reset();
- $provider = new IdentityProvider($new_provider);
-
- module::set_var("gallery", "identity_provider", $new_provider);
-
- if (method_exists("{$new_provider}_installer", "initialize")) {
- call_user_func("{$new_provider}_installer::initialize");
+ try {
+ IdentityProvider::reset();
+ $provider = new IdentityProvider($new_provider);
+
+ module::set_var("gallery", "identity_provider", $new_provider);
+
+ if (method_exists("{$new_provider}_installer", "initialize")) {
+ call_user_func("{$new_provider}_installer::initialize");
+ }
+
+ module::event("identity_provider_changed", $current_provider, $new_provider);
+
+ auth::login($provider->admin_user());
+ Session::instance()->regenerate();
+ } catch (Exception $e) {
+ // Make sure new provider is not in the database
+ module::uninstall($new_provider);
+
+ // Lets reset to the current provider so that the gallery installation is still
+ // working.
+ module::set_var("gallery", "identity_provider", null);
+ IdentityProvider::change_provider($current_provider);
+ module::activate($current_provider);
+ message::error(
+ t("Error attempting to enable \"%new_provider\" identity provider, " .
+ "reverted to \"%old_provider\" identity provider",
+ array("new_provider" => $new_provider, "old_provider" => $current_provider)));
+ throw $e;
}
-
- module::event("identity_provider_changed", $current_provider, $new_provider);
-
- auth::login($provider->admin_user());
- Session::instance()->regenerate();
}
/**
--
cgit v1.2.3
From ece403877fa0a8bf385a1c52d7be99b1e2b002f4 Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Fri, 22 Jan 2010 18:12:30 -0800
Subject: If the userid/password combination, render the full page instead of
just printing the form. Fixes ticket #980.
---
modules/gallery/controllers/login.php | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
(limited to 'modules/gallery/controllers')
diff --git a/modules/gallery/controllers/login.php b/modules/gallery/controllers/login.php
index 75ee6b9c..cfccaf17 100644
--- a/modules/gallery/controllers/login.php
+++ b/modules/gallery/controllers/login.php
@@ -50,7 +50,11 @@ class Login_Controller extends Controller {
if ($valid) {
url::redirect(item::root()->abs_url());
} else {
- print $form;
+ $view = new Theme_View("page.html", "other", "login");
+ $view->page_title = t("Log in to Gallery");
+ $view->content = new View("login_ajax.html");
+ $view->content->form = $form;
+ print $view;
}
}
--
cgit v1.2.3
From ed5b07b335d8bd1520f3b54bf28272f853bbfbfb Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Sat, 23 Jan 2010 21:38:01 -0800
Subject: Create a user profile page that is used as a landing page when
referencing a user in messages or pages. Partial fix for ticket #889 and a
fix for #931.
---
.../views/admin_block_recent_comments.html.php | 3 +-
modules/comment/views/comment.html.php | 3 +-
modules/comment/views/comments.html.php | 3 +-
modules/gallery/controllers/user_profile.php | 80 ++++++++++++++++++++++
modules/gallery/helpers/gallery_event.php | 4 +-
modules/gallery/helpers/user_profile.php | 55 +++++++++++++++
.../gallery/views/admin_block_log_entries.html.php | 2 +-
modules/gallery/views/login_current_user.html.php | 9 +--
modules/gallery/views/user_profile.html.php | 69 +++++++++++++++++++
modules/recaptcha/helpers/recaptcha_event.php | 6 ++
10 files changed, 222 insertions(+), 12 deletions(-)
create mode 100644 modules/gallery/controllers/user_profile.php
create mode 100644 modules/gallery/helpers/user_profile.php
create mode 100644 modules/gallery/views/user_profile.html.php
(limited to 'modules/gallery/controllers')
diff --git a/modules/comment/views/admin_block_recent_comments.html.php b/modules/comment/views/admin_block_recent_comments.html.php
index d9776def..99f72a30 100644
--- a/modules/comment/views/admin_block_recent_comments.html.php
+++ b/modules/comment/views/admin_block_recent_comments.html.php
@@ -8,8 +8,9 @@
width="32"
height="32" />
= gallery::date_time($comment->created) ?>
- = t('%author_name said %comment_text ',
+ = t('%author_name said %comment_text ',
array("author_name" => html::clean($comment->author_name()),
+ "url" => user_profile::url($comment->author_id),
"comment_text" => text::limit_words(nl2br(html::purify($comment->text)), 50))); ?>
endforeach ?>
diff --git a/modules/comment/views/comment.html.php b/modules/comment/views/comment.html.php
index 2c485b53..c4cf1ce0 100644
--- a/modules/comment/views/comment.html.php
+++ b/modules/comment/views/comment.html.php
@@ -8,8 +8,9 @@
width="40"
height="40" />
- = t("on %date_time, %name said",
+ = t("on %date_time, %name said",
array("date_time" => gallery::date_time($comment->created),
+ "url" => user_profile::url($comment->author_id),
"name" => html::clean($comment->author_name()))) ?>
diff --git a/modules/comment/views/comments.html.php b/modules/comment/views/comments.html.php
index fc54e3d2..c8236997 100644
--- a/modules/comment/views/comments.html.php
+++ b/modules/comment/views/comments.html.php
@@ -22,8 +22,9 @@
width="40"
height="40" />
- = t('on %date
%name said',
+ = t('on %date
%name said',
array("date" => date("Y-M-d H:i:s", $comment->created),
+ "url" => user_profile::url($comment->author_id),
"name" => html::clean($comment->author_name()))); ?>
diff --git a/modules/gallery/controllers/user_profile.php b/modules/gallery/controllers/user_profile.php
new file mode 100644
index 00000000..808531da
--- /dev/null
+++ b/modules/gallery/controllers/user_profile.php
@@ -0,0 +1,80 @@
+id == $id;
+ $display_all = $active_user->admin || ($is_current_active && !$active_user->guest);
+
+ $v = new Theme_View("page.html", "other", "profile");
+ $v->page_title = t("%name Profile", array("name" => $user->display_name()));
+ $v->content = new View("user_profile.html");
+
+ // @todo modify user_home to supply a link to their album,
+ // @todo add list of watches
+ // @todo add all comments
+ // @todo add rest api key
+ $v->content->user = $user;
+ $v->content->height = 250;
+ $v->content->not_current = !$is_current_active;
+ $v->content->editable = identity::is_writable() && $display_all;
+ $v->content->return = SafeString::of(Input::instance()->get("return"));
+
+ $fields = array("name" => t("Name"), "locale" => t("Locale"), "email" => t("Email"),
+ "full_name" => t("Full name"), "url" => "Web site");
+ if (!$display_all) {
+ $fields = array("name" => t("Name"), "full_name" => t("Full name"), "url" => "Web site");
+ }
+ $v->content->fields = array();
+ foreach ($fields as $field => $label) {
+ if (!empty($user->$field)) {
+ $v->content->fields[(string)$label->for_html()] = $user->$field;
+ }
+ }
+
+ print $v;
+ }
+
+ public function contact($id) {
+ $user = identity::lookup_user($id);
+ print user_profile::get_contact_form($user);
+ }
+
+ public function send($id) {
+ $user = identity::lookup_user($id);
+ $form = user_profile::get_contact_form($user);
+ if ($form->validate()) {
+ Sendmail::factory()
+ ->to($user->email)
+ ->subject($form->message->subject->value)
+ ->header("Mime-Version", "1.0")
+ ->header("Content-type", "text/html; charset=iso-8859-1")
+ ->reply_to($form->message->reply_to->value)
+ ->message($form->message->message->value)
+ ->send();
+ message::success(t("Sent message to %user_name", array("user_name" => $user->display_name())));
+ print json_encode(array("result" => "success"));
+ } else {
+ print json_encode(array("result" => "error", "form" => (string)$form));
+ }
+ }
+}
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 6175e049..29940ac6 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -111,11 +111,11 @@ class gallery_event_Core {
->label(t("Login")));
} else {
$csrf = access::csrf_token();
- $menu->append(Menu::factory("dialog")
+ $menu->append(Menu::factory("link")
->id("user_menu_edit_profile")
->css_id("g-user-profile-link")
->view("login_current_user.html")
- ->url(url::site("form/edit/user/{$user->id}"))
+ ->url(user_profile::url($user->id))
->label($user->display_name()));
$menu->append(Menu::factory("link")
->id("user_menu_logout")
diff --git a/modules/gallery/helpers/user_profile.php b/modules/gallery/helpers/user_profile.php
new file mode 100644
index 00000000..018e1bd1
--- /dev/null
+++ b/modules/gallery/helpers/user_profile.php
@@ -0,0 +1,55 @@
+id}", "", "post",
+ array("id" => "g-user-profile-contact-form"));
+ $group = $form->group("message")
+ ->label(t("Compose message to %name", array("name" => $user->display_name())));
+ $group->input("reply_to")
+ ->label(t("From:"))
+ ->rules("required|length[1, 256]|valid_email")
+ ->error_messages("required", t("Field is required"))
+ ->error_messages("max_length", t("Field exceeds 256 bytes"))
+ ->error_messages("valid_email", t("Field is not a valid email address"));
+ $group->input("subject")
+ ->label(t("Subject:"))
+ ->rules("required|length[1, 256]")
+ ->error_messages("required", t("Field is required"))
+ ->error_messages("max_length", t("Field exceeds 256 bytes"));
+ $group->textarea("message")
+ ->label(t("Message:"))
+ ->rules("required")
+ ->error_messages("required", t("Field is required"));
+ module::event("user_profile_contact_form", $form);
+ $group->submit("")->value(t("Send"));
+ return $form;
+ }
+}
diff --git a/modules/gallery/views/admin_block_log_entries.html.php b/modules/gallery/views/admin_block_log_entries.html.php
index 780ff2d0..90ce88a7 100644
--- a/modules/gallery/views/admin_block_log_entries.html.php
+++ b/modules/gallery/views/admin_block_log_entries.html.php
@@ -2,7 +2,7 @@
foreach ($entries as $entry): ?>
- user_id") ?>">= html::clean($entry->user->name) ?>
+ = html::clean($entry->user->name) ?>
= gallery::date_time($entry->timestamp) ?>
= $entry->message ?>
= $entry->html ?>
diff --git a/modules/gallery/views/login_current_user.html.php b/modules/gallery/views/login_current_user.html.php
index e3b3688f..39f52b51 100644
--- a/modules/gallery/views/login_current_user.html.php
+++ b/modules/gallery/views/login_current_user.html.php
@@ -1,11 +1,8 @@
$name = $menu->label->for_html() ?>
- if (identity::is_writable()): ?>
+ $hover_text = Identity::is_writable() ? t("Edit your profile")->for_html_attr() :
+ t("Display your profile")->for_html_attr() ?>
= t("Logged in as %name", array("name" => html::mark_clean(
- ""))) ?>
- else: ?>
- = t("Logged in as %name", array("name" => $name)) ?>
- endif ?>
+ ""))) ?>
diff --git a/modules/gallery/views/user_profile.html.php b/modules/gallery/views/user_profile.html.php
new file mode 100644
index 00000000..e7ce56b3
--- /dev/null
+++ b/modules/gallery/views/user_profile.html.php
@@ -0,0 +1,69 @@
+
+
+
+
+
= t("%name Profile", array("name" => $user->display_name())) ?>
+
+
+ = t("User information") ?>
+
+
+ foreach ($fields as $field => $value): ?>
+
+ = $field ?>
+ = $value ?>
+
+ endforeach ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/recaptcha/helpers/recaptcha_event.php b/modules/recaptcha/helpers/recaptcha_event.php
index e7ded3ab..a7f64bdd 100644
--- a/modules/recaptcha/helpers/recaptcha_event.php
+++ b/modules/recaptcha/helpers/recaptcha_event.php
@@ -18,6 +18,12 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class recaptcha_event_Core {
+ static function user_profile_contact_form($form) {
+ if (module::get_var("recaptcha", "public_key")) {
+ $form->message->recaptcha("recaptcha")->label("")->id("g-recaptcha");
+ }
+ }
+
static function comment_add_form($form) {
if (module::get_var("recaptcha", "public_key")) {
$form->add_comment->recaptcha("recaptcha")->label("")->id("g-recaptcha");
--
cgit v1.2.3