summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/comment/helpers/comment_event.php18
-rw-r--r--modules/comment/views/admin_block_recent_comments.html.php3
-rw-r--r--modules/comment/views/comment.html.php3
-rw-r--r--modules/comment/views/comments.html.php3
-rw-r--r--modules/gallery/controllers/admin_identity.php76
-rw-r--r--modules/gallery/controllers/admin_modules.php33
-rw-r--r--modules/gallery/controllers/login.php6
-rw-r--r--modules/gallery/controllers/user_profile.php80
-rw-r--r--modules/gallery/css/l10n_client.css4
-rw-r--r--modules/gallery/helpers/gallery_event.php43
-rw-r--r--modules/gallery/helpers/locales.php4
-rw-r--r--modules/gallery/helpers/module.php8
-rw-r--r--modules/gallery/helpers/user_profile.php55
-rw-r--r--modules/gallery/libraries/Admin_View.php10
-rw-r--r--modules/gallery/libraries/IdentityProvider.php45
-rw-r--r--modules/gallery/tests/controller_auth_data.txt3
-rw-r--r--modules/gallery/tests/xss_data.txt51
-rw-r--r--modules/gallery/views/admin_block_log_entries.html.php2
-rw-r--r--modules/gallery/views/admin_identity.html.php59
-rw-r--r--modules/gallery/views/admin_identity_confirm.html.php10
-rw-r--r--modules/gallery/views/admin_modules.html.php5
-rw-r--r--modules/gallery/views/form_uploadify.html.php12
-rw-r--r--modules/gallery/views/login_current_user.html.php8
-rw-r--r--modules/gallery/views/user_profile.html.php69
-rw-r--r--modules/recaptcha/helpers/recaptcha_event.php6
-rw-r--r--modules/slideshow/helpers/slideshow_installer.php2
-rw-r--r--modules/user/helpers/user_installer.php72
-rw-r--r--modules/user/module.info2
-rw-r--r--modules/user/views/admin_users.html.php2
-rw-r--r--themes/admin_wind/css/screen.css5
-rw-r--r--themes/admin_wind/views/admin.html.php15
31 files changed, 422 insertions, 292 deletions
diff --git a/modules/comment/helpers/comment_event.php b/modules/comment/helpers/comment_event.php
index 43a30d70..bd336cda 100644
--- a/modules/comment/helpers/comment_event.php
+++ b/modules/comment/helpers/comment_event.php
@@ -27,14 +27,16 @@ class comment_event_Core {
static function user_deleted($user) {
$guest = identity::guest();
- db::build()
- ->update("comments")
- ->set("author_id", $guest->id)
- ->set("guest_email", null)
- ->set("guest_name", "guest")
- ->set("guest_url", null)
- ->where("author_id", "=", $user->id)
- ->execute();
+ if (!empty($guest)) { // could be empty if there is not identity provider
+ db::build()
+ ->update("comments")
+ ->set("author_id", $guest->id)
+ ->set("guest_email", null)
+ ->set("guest_name", "guest")
+ ->set("guest_url", null)
+ ->where("author_id", "=", $user->id)
+ ->execute();
+ }
}
static function identity_provider_changed($old_provider, $new_provider) {
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('<a href="#">%author_name</a> said <em>%comment_text</em>',
+ <?= t('<a href="%url">%author_name</a> said <em>%comment_text</em>',
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))); ?>
</li>
<? 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" />
</a>
- <?= t("on %date_time, <a href=\"#\">%name</a> said",
+ <?= t("on %date_time, <a href=\"%url\">%name</a> said",
array("date_time" => gallery::date_time($comment->created),
+ "url" => user_profile::url($comment->author_id),
"name" => html::clean($comment->author_name()))) ?>
</p>
<div>
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" />
</a>
- <?= t('on %date <a href="#">%name</a> said',
+ <?= t('on %date <a href="%url">%name</a> 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()))); ?>
</p>
<div>
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 @@
-<?php defined("SYSPATH") or die("No direct script access.");
-/**
- * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2009 Bharat Mediratta
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
- */
-class Admin_Identity_Controller extends Admin_Controller {
- public function index() {
- $view = new Admin_View("admin.html");
- $view->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");
- }
-}
-
diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php
index 46defbef..84fee25d 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));
}
}
@@ -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/controllers/login.php b/modules/gallery/controllers/login.php
index 464db491..cfe86cfb 100644
--- a/modules/gallery/controllers/login.php
+++ b/modules/gallery/controllers/login.php
@@ -48,7 +48,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;
}
}
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 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class User_Profile_Controller extends Controller {
+ public function show($id) {
+ // If we get here, then we should have a user id other than guest.
+ $user = identity::lookup_user($id);
+ $active_user = identity::active_user();
+ $is_current_active = $active_user->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/css/l10n_client.css b/modules/gallery/css/l10n_client.css
index 3771c049..053b4432 100644
--- a/modules/gallery/css/l10n_client.css
+++ b/modules/gallery/css/l10n_client.css
@@ -184,7 +184,9 @@
}
#l10n-client-string-editor .translation {
- overflow:hidden;
+ overflow-y:auto;
+ overflow-x: hidden;
+ height: 20em;
width:49%;
float: right;
}
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 4d208893..255176c4 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -30,21 +30,23 @@ class gallery_event_Core {
static function user_deleted($user) {
$admin = identity::admin_user();
- db::build()
- ->update("tasks")
- ->set("owner_id", $admin->id)
- ->where("owner_id", "=", $user->id)
- ->execute();
- db::build()
- ->update("items")
- ->set("owner_id", $admin->id)
- ->where("owner_id", "=", $user->id)
- ->execute();
- db::build()
- ->update("logs")
- ->set("user_id", $admin->id)
- ->where("user_id", "=", $user->id)
- ->execute();
+ if (!empty($admin)) { // could be empty if there is not identity provider
+ db::build()
+ ->update("tasks")
+ ->set("owner_id", $admin->id)
+ ->where("owner_id", "=", $user->id)
+ ->execute();
+ db::build()
+ ->update("items")
+ ->set("owner_id", $admin->id)
+ ->where("owner_id", "=", $user->id)
+ ->execute();
+ db::build()
+ ->update("logs")
+ ->set("user_id", $admin->id)
+ ->where("user_id", "=", $user->id)
+ ->execute();
+ }
}
static function identity_provider_changed($old_provider, $new_provider) {
@@ -127,12 +129,11 @@ class gallery_event_Core {
->label(t("Login")));
} else {
$csrf = access::csrf_token();
- $item = $theme->item();
- $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/users/{$user->id}"))
+ ->url(user_profile::url($user->id))
->label($user->display_name()));
$menu->append(Menu::factory("link")
->id("user_menu_logout")
@@ -246,11 +247,7 @@ class gallery_event_Core {
->append(Menu::factory("link")
->id("advanced")
->label(t("Advanced"))
- ->url(url::site("admin/advanced_settings")))
- ->append(Menu::factory("link")
- ->id("authentication")
- ->label(t("Authentication"))
- ->url(url::site("admin/identity"))))
+ ->url(url::site("admin/advanced_settings"))))
->append(Menu::factory("link")
->id("modules")
->label(t("Modules"))
diff --git a/modules/gallery/helpers/locales.php b/modules/gallery/helpers/locales.php
index 8d76e333..5c8c227a 100644
--- a/modules/gallery/helpers/locales.php
+++ b/modules/gallery/helpers/locales.php
@@ -41,7 +41,7 @@ class locales_Core {
$default = module::get_var("gallery", "default_locale");
$codes = explode("|", module::get_var("gallery", "installed_locales", $default));
foreach ($codes as $code) {
- if (isset($available->$code)) {
+ if (isset($available[$code])) {
$installed[$code] = $available[$code];
}
}
@@ -127,7 +127,7 @@ class locales_Core {
}
$locale or $locale = Gallery_I18n::instance()->locale();
- return self::$locales["$locale"];
+ return self::$locales[$locale];
}
static function is_rtl($locale=null) {
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/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 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+class user_profile_Core {
+ /**
+ * Generate the url to display the profile
+ * @return url for the profile display
+ */
+ static function url($user_id) {
+ $return_url = urlencode(url::abs_current());
+ return url::site("user_profile/show/{$user_id}?return=$return_url");
+ }
+
+ static function get_contact_form($user) {
+ $form = new Forge("user_profile/send/{$user->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/libraries/Admin_View.php b/modules/gallery/libraries/Admin_View.php
index a990e4ca..e3f9dff0 100644
--- a/modules/gallery/libraries/Admin_View.php
+++ b/modules/gallery/libraries/Admin_View.php
@@ -36,6 +36,8 @@ class Admin_View_Core extends Gallery_View {
$this->sidebar = "";
$this->set_global("theme", $this);
$this->set_global("user", identity::active_user());
+ $this->set_global("page_type", "admin");
+ $this->set_global("page_subtype", $name);
}
public function admin_menu() {
@@ -44,6 +46,14 @@ class Admin_View_Core extends Gallery_View {
return $menu->render();
}
+ public function user_menu() {
+ $menu = Menu::factory("root")
+ ->css_id("g-login-menu")
+ ->css_class("g-inline ui-helper-clear-fix");
+ module::event("user_menu", $menu, $this);
+ return $menu->render();
+ }
+
/**
* Print out any site wide status information.
*/
diff --git a/modules/gallery/libraries/IdentityProvider.php b/modules/gallery/libraries/IdentityProvider.php
index 30d4efa4..79151154 100644
--- a/modules/gallery/libraries/IdentityProvider.php
+++ b/modules/gallery/libraries/IdentityProvider.php
@@ -58,6 +58,51 @@ class IdentityProvider_Core {
}
/**
+ * Return a commen confirmation message
+ */
+ static function confirmation_message() {
+ return t("Are you sure you want to change your Identity Provider? " .
+ "Continuing will delete all existing users.");
+ }
+
+ static function change_provider($new_provider) {
+ $current_provider = module::get_var("gallery", "identity_provider");
+ if (!empty($current_provider)) {
+ module::uninstall($current_provider);
+ }
+
+ 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;
+ }
+ }
+
+ /**
* Loads the configured driver and validates it.
*
* @return void
diff --git a/modules/gallery/tests/controller_auth_data.txt b/modules/gallery/tests/controller_auth_data.txt
index 71ae5a0c..40f37e96 100644
--- a/modules/gallery/tests/controller_auth_data.txt
+++ b/modules/gallery/tests/controller_auth_data.txt
@@ -19,6 +19,9 @@ modules/gallery/controllers/quick.php form_edit
modules/gallery/controllers/simple_uploader.php start DIRTY_AUTH
modules/gallery/controllers/simple_uploader.php finish DIRTY_AUTH
modules/gallery/controllers/upgrader.php index DIRTY_AUTH
+modules/gallery/controllers/user_profile.php show DIRTY_CSRF|DIRTY_AUTH
+modules/gallery/controllers/user_profile.php contact DIRTY_AUTH
+modules/gallery/controllers/user_profile.php send DIRTY_AUTH
modules/gallery/controllers/welcome_message.php index DIRTY_AUTH
modules/rest/controllers/rest.php index DIRTY_CSRF|DIRTY_AUTH
modules/rest/controllers/rest.php __call DIRTY_CSRF|DIRTY_AUTH
diff --git a/modules/gallery/tests/xss_data.txt b/modules/gallery/tests/xss_data.txt
index 1530c73e..a89725c0 100644
--- a/modules/gallery/tests/xss_data.txt
+++ b/modules/gallery/tests/xss_data.txt
@@ -43,6 +43,7 @@ modules/g2_import/views/admin_g2_import.html.php 30 DIRTY $form
modules/gallery/views/admin_advanced_settings.html.php 21 DIRTY_ATTR text::alternate("g-odd","g-even")
modules/gallery/views/admin_advanced_settings.html.php 22 DIRTY $var->module_name
modules/gallery/views/admin_block_log_entries.html.php 4 DIRTY_ATTR log::severity_class($entry->severity)
+modules/gallery/views/admin_block_log_entries.html.php 5 DIRTY_JS user_profile::url($entryr->id)
modules/gallery/views/admin_block_log_entries.html.php 6 DIRTY gallery::date_time($entry->timestamp)
modules/gallery/views/admin_block_log_entries.html.php 7 DIRTY $entry->message
modules/gallery/views/admin_block_log_entries.html.php 8 DIRTY $entry->html
@@ -66,11 +67,6 @@ modules/gallery/views/admin_graphics_graphicsmagick.html.php 18 DIRTY $tk->e
modules/gallery/views/admin_graphics_imagemagick.html.php 2 DIRTY_ATTR $is_active?" g-selected":""
modules/gallery/views/admin_graphics_imagemagick.html.php 2 DIRTY_ATTR $tk->installed?" g-installed-toolkit":" g-unavailable"
modules/gallery/views/admin_graphics_imagemagick.html.php 18 DIRTY $tk->error
-modules/gallery/views/admin_identity.html.php 43 DIRTY access::csrf_form_field()
-modules/gallery/views/admin_identity.html.php 50 DIRTY_ATTR text::alternate("g-odd","g-even")
-modules/gallery/views/admin_identity.html.php 52 DIRTY form::radio($data,$module_name,$module_name==$active)
-modules/gallery/views/admin_identity_confirm.html.php 3 DIRTY access::csrf_form_field()
-modules/gallery/views/admin_identity_confirm.html.php 4 DIRTY form::hidden("provider",$new_provider)
modules/gallery/views/admin_languages.html.php 43 DIRTY access::csrf_form_field()
modules/gallery/views/admin_languages.html.php 60 DIRTY_ATTR (isset($installed_locales[$code]))?"g-available":""
modules/gallery/views/admin_languages.html.php 60 DIRTY_ATTR ($default_locale==$code)?" g-selected":""
@@ -98,10 +94,16 @@ modules/gallery/views/admin_maintenance.html.php 158 DIRTY $task-
modules/gallery/views/admin_maintenance_show_log.html.php 8 DIRTY_JS url::site("admin/maintenance/save_log/$task->id?csrf=$csrf")
modules/gallery/views/admin_maintenance_show_log.html.php 13 DIRTY $task->name
modules/gallery/views/admin_maintenance_task.html.php 55 DIRTY $task->name
-modules/gallery/views/admin_modules.html.php 10 DIRTY access::csrf_form_field()
-modules/gallery/views/admin_modules.html.php 19 DIRTY_ATTR text::alternate("g-odd","g-even")
-modules/gallery/views/admin_modules.html.php 22 DIRTY form::checkbox($data,'1',module::is_active($module_name))
-modules/gallery/views/admin_modules.html.php 24 DIRTY $module_info->version
+modules/gallery/views/admin_modules.html.php 25 DIRTY_JS t("Continue")
+modules/gallery/views/admin_modules.html.php 35 DIRTY_JS t("Continue")
+modules/gallery/views/admin_modules.html.php 51 DIRTY access::csrf_form_field()
+modules/gallery/views/admin_modules.html.php 60 DIRTY_ATTR text::alternate("g-odd","g-even")
+modules/gallery/views/admin_modules.html.php 63 DIRTY form::checkbox($data,'1',module::is_active($module_name))
+modules/gallery/views/admin_modules.html.php 65 DIRTY $module_info->version
+modules/gallery/views/admin_modules_confirm.html.php 11 DIRTY_ATTR $class
+modules/gallery/views/admin_modules_confirm.html.php 11 DIRTY $message
+modules/gallery/views/admin_modules_confirm.html.php 16 DIRTY access::csrf_form_field()
+modules/gallery/views/admin_modules_confirm.html.php 18 DIRTY form::hidden($module,1)
modules/gallery/views/admin_sidebar.html.php 50 DIRTY $available
modules/gallery/views/admin_sidebar.html.php 58 DIRTY $active
modules/gallery/views/admin_sidebar_blocks.html.php 4 DIRTY_ATTR $ref
@@ -118,11 +120,11 @@ modules/gallery/views/admin_themes.html.php 62 DIRTY $theme
modules/gallery/views/admin_themes.html.php 76 DIRTY $info->name
modules/gallery/views/admin_themes.html.php 78 DIRTY $info->description
modules/gallery/views/admin_themes_preview.html.php 7 DIRTY_ATTR $url
-modules/gallery/views/form_uploadify.html.php 24 DIRTY_JS url::file("lib/uploadify/uploadify.swf")
-modules/gallery/views/form_uploadify.html.php 25 DIRTY_JS url::site("simple_uploader/add_photo/{$album->id}")
-modules/gallery/views/form_uploadify.html.php 29 DIRTY_JS url::file("lib/uploadify/cancel.png")
-modules/gallery/views/form_uploadify.html.php 30 DIRTY_JS $simultaneous_upload_limit
-modules/gallery/views/form_uploadify.html.php 55 DIRTY_JS t("Completed")
+modules/gallery/views/form_uploadify.html.php 30 DIRTY_JS url::file("lib/uploadify/uploadify.swf")
+modules/gallery/views/form_uploadify.html.php 31 DIRTY_JS url::site("simple_uploader/add_photo/{$album->id}")
+modules/gallery/views/form_uploadify.html.php 35 DIRTY_JS url::file("lib/uploadify/cancel.png")
+modules/gallery/views/form_uploadify.html.php 36 DIRTY_JS $simultaneous_upload_limit
+modules/gallery/views/form_uploadify.html.php 61 DIRTY_JS t("Completed")
modules/gallery/views/in_place_edit.html.php 2 DIRTY form::open($action,array("method"=>"post","id"=>"g-in-place-edit-form","class"=>"g-short-form"),$hidden)
modules/gallery/views/in_place_edit.html.php 5 DIRTY form::input("input",$form["input"]," class=\"textbox\"")
modules/gallery/views/in_place_edit.html.php 12 DIRTY form::close()
@@ -217,6 +219,10 @@ modules/gallery/views/upgrader.html.php 77 DIRTY $modul
modules/gallery/views/upgrader.html.php 99 DIRTY_ATTR $done?"muted":""
modules/gallery/views/upgrader.html.php 102 DIRTY_ATTR $done?"muted":""
modules/gallery/views/user_languages_block.html.php 2 DIRTY form::dropdown("g-select-session-locale",$installed_locales,$selected)
+modules/gallery/views/user_profile.html.php 35 DIRTY_ATTR $height
+modules/gallery/views/user_profile.html.php 44 DIRTY $field
+modules/gallery/views/user_profile.html.php 45 DIRTY $value
+modules/gallery/views/user_profile.html.php 65 DIRTY_JS $return->for_html_attr()
modules/image_block/views/image_block_block.html.php 3 DIRTY_JS $item->url()
modules/image_block/views/image_block_block.html.php 4 DIRTY $item->thumb_img(array("class"=>"g-thumbnail"))
modules/info/views/info_block.html.php 22 DIRTY date("M j, Y H:i:s",$item->captured)
@@ -326,14 +332,15 @@ themes/admin_wind/views/admin.html.php 16 DIRTY_JS $theme
themes/admin_wind/views/admin.html.php 33 DIRTY $theme->admin_head()
themes/admin_wind/views/admin.html.php 37 DIRTY $theme->admin_page_top()
themes/admin_wind/views/admin.html.php 45 DIRTY $theme->admin_header_top()
-themes/admin_wind/views/admin.html.php 60 DIRTY_JS item::root()->url()
-themes/admin_wind/views/admin.html.php 64 DIRTY $theme->admin_menu()
-themes/admin_wind/views/admin.html.php 66 DIRTY $theme->admin_header_bottom()
-themes/admin_wind/views/admin.html.php 73 DIRTY $content
-themes/admin_wind/views/admin.html.php 79 DIRTY $sidebar
-themes/admin_wind/views/admin.html.php 84 DIRTY $theme->admin_footer()
-themes/admin_wind/views/admin.html.php 86 DIRTY $theme->admin_credits()
-themes/admin_wind/views/admin.html.php 90 DIRTY $theme->admin_page_bottom()
+themes/admin_wind/views/admin.html.php 46 DIRTY_JS item::root()->url()
+themes/admin_wind/views/admin.html.php 49 DIRTY $theme->user_menu()
+themes/admin_wind/views/admin.html.php 51 DIRTY $theme->admin_menu()
+themes/admin_wind/views/admin.html.php 53 DIRTY $theme->admin_header_bottom()
+themes/admin_wind/views/admin.html.php 60 DIRTY $content
+themes/admin_wind/views/admin.html.php 66 DIRTY $sidebar
+themes/admin_wind/views/admin.html.php 71 DIRTY $theme->admin_footer()
+themes/admin_wind/views/admin.html.php 73 DIRTY $theme->admin_credits()
+themes/admin_wind/views/admin.html.php 77 DIRTY $theme->admin_page_bottom()
themes/admin_wind/views/block.html.php 3 DIRTY_ATTR $anchor
themes/admin_wind/views/block.html.php 5 DIRTY $id
themes/admin_wind/views/block.html.php 5 DIRTY_ATTR $css_id
diff --git a/modules/gallery/views/admin_block_log_entries.html.php b/modules/gallery/views/admin_block_log_entries.html.php
index 780ff2d0..453724cb 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 @@
<ul>
<? foreach ($entries as $entry): ?>
<li class="<?= log::severity_class($entry->severity) ?>" style="direction: ltr">
- <a href="<?= url::site("user/$entry->user_id") ?>"><?= html::clean($entry->user->name) ?></a>
+ <a href="<?= user_profile::url($entry->user->id) ?>"><?= html::clean($entry->user->name) ?></a>
<?= gallery::date_time($entry->timestamp) ?>
<?= $entry->message ?>
<?= $entry->html ?>
diff --git a/modules/gallery/views/admin_identity.html.php b/modules/gallery/views/admin_identity.html.php
deleted file mode 100644
index 51eaa58a..00000000
--- a/modules/gallery/views/admin_identity.html.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php defined("SYSPATH") or die("No direct script access.") ?>
-<script type="text/javascript">
- $(document).ready(function() {
- $("#g-modules form").submit(function() {
- var eDialog = '<div id="g-dialog"></div>';
- var params = $(this).serialize();
- var url = $(this).attr("action");
- $("body").append(eDialog);
- $.post($(this).attr("action"), $(this).serialize(), function(data, textStatus) {
- $("#g-dialog").html(data);
- $("#g-dialog").dialog({
- bgiframe: true,
- title: <?= t("Confirm identity provider change")->for_js() ?>,
- resizable: false,
- height:180,
- modal: true,
- overlay: {
- backgroundColor: '#000',
- opacity: 0.5
- },
- buttons: {
- "Continue": function() {
- $("#g-dialog form").submit();
- },
- Cancel: function() {
- $(this).dialog('destroy').remove();
- }
- }
- });
- });
- return false;
- });
- });
-
-</script>
-<div id="g-modules">
- <h1> <?= t("Manage identity providers") ?> </h1>
- <p>
- <?= t("Choose a different user/group management provider.") ?>
- </p>
-
- <form method="post" action="<?= url::site("admin/identity/confirm") ?>">
- <?= access::csrf_form_field() ?>
- <table>
- <tr>
- <th> <?= t("Active") ?> </th>
- <th> <?= t("Description") ?> </th>
- </tr>
- <? foreach ($available as $module_name => $description): ?>
- <tr class="<?= text::alternate("g-odd", "g-even") ?>">
- <? $data = array("name" => "provider"); ?>
- <td> <?= form::radio($data, $module_name, $module_name == $active) ?> </td>
- <td> <?= t($description) ?> </td>
- </tr>
- <? endforeach ?>
- </table>
- <input type="submit" value="<?= t("Change")->for_html_attr() ?>" />
- </form>
-</div>
diff --git a/modules/gallery/views/admin_identity_confirm.html.php b/modules/gallery/views/admin_identity_confirm.html.php
deleted file mode 100644
index 54aae9c8..00000000
--- a/modules/gallery/views/admin_identity_confirm.html.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php defined("SYSPATH") or die("No direct script access.") ?>
-<form method="post" action="<?= url::site("admin/identity/change") ?>">
- <?= access::csrf_form_field() ?>
- <?= form::hidden("provider", $new_provider) ?>
-
- <p><span class="ui-icon ui-icon-alert" style="float: left; margin:0 7px 20px 0;"></span>
- <?= t("Are you sure you want to change your Identity Provider? Continuing will delete all existing users.") ?>
- </p>
-</form>
-
diff --git a/modules/gallery/views/admin_modules.html.php b/modules/gallery/views/admin_modules.html.php
index 704e7beb..26b2c87c 100644
--- a/modules/gallery/views/admin_modules.html.php
+++ b/modules/gallery/views/admin_modules.html.php
@@ -22,6 +22,9 @@
buttons: {
<?= t("Continue")->for_js() ?>: function() {
$("form", this).submit();
+ $(".ui-dialog-buttonpane button:contains(<?= t("Continue") ?>)")
+ .attr("disabled", "disabled")
+ .addClass("ui-state-disabled");
},
<?= t("Cancel")->for_js() ?>: function() {
$(this).dialog("destroy").remove();
@@ -29,7 +32,7 @@
}
});
if (!data.allow_continue) {
- $(".ui-dialog-buttonpane button:contains(Continue)")
+ $(".ui-dialog-buttonpane button:contains(<?= t("Continue") ?>)")
.attr("disabled", "disabled")
.addClass("ui-state-disabled");
}
diff --git a/modules/gallery/views/form_uploadify.html.php b/modules/gallery/views/form_uploadify.html.php
index f3b9c883..b3b81ecb 100644
--- a/modules/gallery/views/form_uploadify.html.php
+++ b/modules/gallery/views/form_uploadify.html.php
@@ -2,17 +2,21 @@
<style>
#g-add-photos-canvas object {
height: 33px;
- left: -60px;
+ left: -80px;
position: relative;
z-index: 100;
}
+#g-add-photos-canvas span {
+ height: 33px;
+ width: 150px;
+}
#g-add-photos-button {
float: left;
- left: 175px;
+ left: 155px;
padding-bottom: .5em;
padding-top: .5em;
position: relative;
- width: 110px;
+ width: 150px;
z-index: 1;
}
</style>
@@ -21,6 +25,8 @@
<script type="text/javascript">
$("#g-add-photos-canvas").ready(function () {
$("#g-uploadify").uploadify({
+ width: 150,
+ height: 33,
uploader: "<?= url::file("lib/uploadify/uploadify.swf") ?>",
script: "<?= url::site("simple_uploader/add_photo/{$album->id}") ?>",
scriptData: <?= json_encode($script_data) ?>,
diff --git a/modules/gallery/views/login_current_user.html.php b/modules/gallery/views/login_current_user.html.php
index e3b3688f..94525576 100644
--- a/modules/gallery/views/login_current_user.html.php
+++ b/modules/gallery/views/login_current_user.html.php
@@ -1,11 +1,7 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<li>
<? $name = $menu->label->for_html() ?>
- <? if (identity::is_writable()): ?>
+ <? $hover_text = t("Your profile")->for_html_attr() ?>
<?= t("Logged in as %name", array("name" => html::mark_clean(
- "<a href='$menu->url' title='" . t("Edit your profile")->for_html_attr() .
- "' id='$menu->id' class='g-dialog-link'>{$name}</a>"))) ?>
- <? else: ?>
- <?= t("Logged in as %name", array("name" => $name)) ?>
- <? endif ?>
+ "<a href='$menu->url' title='$hover_text' id='$menu->id'>{$name}</a>"))) ?>
</li>
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 @@
+<?php defined("SYSPATH") or die("No direct script access.") ?>
+<style>
+ #g-user-profile #g-profile-buttons {
+ bottom: 0;
+ position: absolute;
+ right: 0;
+ }
+
+ #g-user-profile fieldset {
+ border: 1px solid #CCCCCC;
+ padding: 0 1em 0.8em;
+ }
+
+ #g-user-profile fieldset label {
+ font-weight: bold;
+ }
+
+ #g-user-profile fieldset div {
+ padding-left: 1em;
+ }
+
+ #g-user-profile td {
+ border: none;
+ padding: 0;
+ }
+
+</style>
+<script>
+ $("#g-user-profile").ready(function() {
+ //$("#g-profile-return").click(function(event) {
+ // window.location = <?= $return->for_js() ?>;
+ //});
+ });
+</script>
+<div id="g-user-profile" style="height: <?= $height ?>px">
+ <h1 style="display: none"><?= t("%name Profile", array("name" => $user->display_name())) ?></h1>
+ <div>
+ <fieldset>
+ <label><?= t("User information") ?></label>
+ <div>
+ <table>
+ <? foreach ($fields as $field => $value): ?>
+ <tr>
+ <td><?= $field ?></td>
+ <td><?= $value ?></td>
+ </tr>
+ <? endforeach ?>
+ </table>
+ </div>
+ </fieldset>
+ </div>
+ <div id="g-profile-buttons" class="ui-helper-clearfix g-right">
+ <? if (!$user->guest && $not_current && !empty($user->email)): ?>
+ <a class="g-button ui-icon-right ui-state-default ui-corner-all g-dialog-link"
+ href="<?= url::site("user_profile/contact/{$user->id}") ?>">
+ <?= t("Contact") ?>
+ </a>
+ <? endif ?>
+ <? if ($editable): ?>
+ <a class="g-button ui-icon-right ui-state-default ui-corner-all g-dialog-link" href="<?= url::site("form/edit/users/{$user->id}") ?>">
+ <?= t("Edit") ?>
+ </a>
+ <? endif ?>
+
+ <a class="g-button ui-icon-right ui-state-default ui-corner-all" href="<?= $return->for_html_attr() ?>">
+ <?= t("Return") ?>
+ </a>
+ </div>
+</div> \ 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");
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 f7e3b60b..f2d131ae 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -18,7 +18,39 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class user_installer {
+ static function can_activate() {
+ return array("warn" => array(IdentityProvider::confirmation_message()));
+ }
+
static function install() {
+ IdentityProvider::change_provider("user");
+ }
+
+ static function upgrade($version) {
+ if ($version == 1) {
+ module::set_var("user", "mininum_password_length", 5);
+
+ module::set_version("user", $version = 2);
+ }
+ }
+
+ static function uninstall() {
+ // Delete all users and groups so that we give other modules an opportunity to clean up
+ foreach (ORM::factory("user")->find_all() as $user) {
+ $user->delete();
+ }
+
+ foreach (ORM::factory("group")->find_all() as $group) {
+ $group->delete();
+ }
+
+ $db = Database::instance();
+ $db->query("DROP TABLE IF EXISTS {users};");
+ $db->query("DROP TABLE IF EXISTS {groups};");
+ $db->query("DROP TABLE IF EXISTS {groups_users};");
+ }
+
+ static function initialize() {
$db = Database::instance();
$db->query("CREATE TABLE IF NOT EXISTS {users} (
`id` int(9) NOT NULL auto_increment,
@@ -89,19 +121,6 @@ class user_installer {
$admin->add($registered);
$admin->save();
- $current_provider = module::get_var("gallery", "identity_provider");
- if (empty($current_provider)) {
- // If there is no provider defined then we are doing an initial install
- // so we need to set the provider and make the administrator own everything
- // If the installer is called and there is an identity provider, then we
- // are switching identity providers and and the event handlers will do the
- // right things
- module::set_var("gallery", "identity_provider", "user");
-
- // Let the admin own everything
- $db->query("update {items} set owner_id = {$admin->id}");
- }
-
$root = ORM::factory("item", 1);
access::allow($everybody, "view", $root);
access::allow($everybody, "view_full", $root);
@@ -109,32 +128,7 @@ class user_installer {
access::allow($registered, "view", $root);
access::allow($registered, "view_full", $root);
- module::set_var("user", "mininum_password_length", 5);
-
module::set_version("user", 2);
- }
-
- static function upgrade($version) {
- if ($version == 1) {
- module::set_var("user", "mininum_password_length", 5);
-
- module::set_version("user", $version = 2);
- }
- }
-
- static function uninstall() {
- // Delete all users and groups so that we give other modules an opportunity to clean up
- foreach (ORM::factory("user")->find_all() as $user) {
- $user->delete();
- }
-
- foreach (ORM::factory("group")->find_all() as $group) {
- $group->delete();
- }
-
- $db = Database::instance();
- $db->query("DROP TABLE IF EXISTS {users};");
- $db->query("DROP TABLE IF EXISTS {groups};");
- $db->query("DROP TABLE IF EXISTS {groups_users};");
+ module::set_var("user", "mininum_password_length", 5);
}
} \ No newline at end of file
diff --git a/modules/user/module.info b/modules/user/module.info
index 7178f108..d1e02382 100644
--- a/modules/user/module.info
+++ b/modules/user/module.info
@@ -2,5 +2,3 @@ name = "Users and Groups"
description = "Gallery 3 user and group management"
version = 2
-; Don't show this module on the module administration screen
-no_module_admin = 1
diff --git a/modules/user/views/admin_users.html.php b/modules/user/views/admin_users.html.php
index 45d04916..270a7207 100644
--- a/modules/user/views/admin_users.html.php
+++ b/modules/user/views/admin_users.html.php
@@ -107,7 +107,7 @@
</div>
</div>
- <div id="g-group-admin" class="g-block g-right ui-helper-clearfix">
+ <div id="g-group-admin" class="g-block ui-helper-clearfix">
<a href="<?= url::site("admin/users/add_group_form") ?>"
class="g-dialog-link g-button g-right ui-icon-left ui-state-default ui-corner-all"
title="<?= t("Create a new group")->for_html_attr() ?>">
diff --git a/themes/admin_wind/css/screen.css b/themes/admin_wind/css/screen.css
index 73ec8ac5..ac47a3db 100644
--- a/themes/admin_wind/css/screen.css
+++ b/themes/admin_wind/css/screen.css
@@ -229,6 +229,7 @@ th {
#g-header #g-login-menu {
margin-top: 1em;
+ float: right;
}
/* View container ~~~~~~~~~~~~~~~~~~~~~~~~ */
@@ -473,6 +474,10 @@ th {
right: 150px;
}
+.rtl #g-header #g-login-menu {
+ float: left;
+}
+
.rtl #g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
diff --git a/themes/admin_wind/views/admin.html.php b/themes/admin_wind/views/admin.html.php
index 25ba1c97..fa79119a 100644
--- a/themes/admin_wind/views/admin.html.php
+++ b/themes/admin_wind/views/admin.html.php
@@ -43,23 +43,10 @@
<?= $theme->site_status() ?>
<div id="g-header" class="ui-helper-clearfix">
<?= $theme->admin_header_top() ?>
- <ul id="g-login-menu" class="g-inline g-right">
- <li class="g-first">
- <? if (identity::is_writable()): ?>
- <?= t('Logged in as %name', array('name' => html::mark_clean(
- '<a href="' . url::site("form/edit/users/{$user->id}") .
- '" title="' . t("Edit your profile")->for_html_attr() .
- '" id="g-user-profile-link" class="g-dialog-link">' .
- html::clean($user->display_name()) . '</a>'))) ?>
- <? else: ?>
- <?= t('Logged in as %name', array('name' => html::clean($user->display_name()))) ?>
- <? endif ?>
- </li>
- <li id="g-logout-link"><a href="<?= url::site("logout?csrf=$csrf&amp;continue=" . urlencode(item::root()->url())) ?>"><?= t("Logout") ?></a></li>
- </ul>
<a id="g-logo" class="g-left" href="<?= item::root()->url() ?>" title="<?= t("go back to the Gallery")->for_html_attr() ?>">
&larr; <?= t("back to the ...") ?>
</a>
+ <?= $theme->user_menu() ?>
<div id="g-site-admin-menu" class="ui-helper-clearfix">
<?= $theme->admin_menu() ?>
</div>