summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/gallery/config/identity.php3
-rw-r--r--modules/gallery/helpers/gallery_theme.php1
-rw-r--r--modules/gallery/helpers/user.php39
-rw-r--r--modules/gallery/libraries/Identity.php11
-rw-r--r--modules/gallery/libraries/drivers/Identity.php1
-rw-r--r--modules/gallery/views/admin_users.html.php36
-rw-r--r--modules/gallery/views/admin_users_group.html.php4
-rw-r--r--modules/gallery/views/login.html.php2
-rw-r--r--themes/admin_wind/css/screen.css3
9 files changed, 75 insertions, 25 deletions
diff --git a/modules/gallery/config/identity.php b/modules/gallery/config/identity.php
index f2064127..72d1b589 100644
--- a/modules/gallery/config/identity.php
+++ b/modules/gallery/config/identity.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*
- * @package User
+ * @package Identity
*
* User settings, defined as arrays, or "groups". If no group name is
* used when loading the cache library, the group named "default" will be used.
@@ -32,5 +32,6 @@
*/
$config["default"] = array (
"driver" => "gallery",
+ "allow_updates" => false,
"params" => array(),
);
diff --git a/modules/gallery/helpers/gallery_theme.php b/modules/gallery/helpers/gallery_theme.php
index a342b4bd..54b35fb7 100644
--- a/modules/gallery/helpers/gallery_theme.php
+++ b/modules/gallery/helpers/gallery_theme.php
@@ -55,6 +55,7 @@ class gallery_theme_Core {
if ($theme->page_type != "login") {
$view = new View("login.html");
$view->user = user::active();
+ $view->writable = user::is_writable();
return $view->render();
}
}
diff --git a/modules/gallery/helpers/user.php b/modules/gallery/helpers/user.php
index abbf8ab0..e3494fdf 100644
--- a/modules/gallery/helpers/user.php
+++ b/modules/gallery/helpers/user.php
@@ -25,24 +25,34 @@
*/
class user_Core {
static function get_edit_form($user) {
+ $writable = self::is_writable();
$form = new Forge("users/update/$user->id", "", "post", array("id" => "g-edit-user-form"));
$form->set_attr("class", "g-narrow");
$group = $form->group("edit_user")->label(t("Edit User: %name", array("name" => $user->name)));
$group->input("full_name")->label(t("Full Name"))->id("g-fullname")->value($user->full_name);
self::_add_locale_dropdown($group, $user);
- $group->password("password")->label(t("Password"))->id("g-password");
- $group->password("password2")->label(t("Confirm Password"))->id("g-password2")
- ->matches($group->password);
+ if ($writable) {
+ $group->password("password")->label(t("Password"))->id("g-password");
+ $group->password("password2")->label(t("Confirm Password"))->id("g-password2")
+ ->matches($group->password);
+ }
$group->input("email")->label(t("Email"))->id("g-email")->value($user->email);
$group->input("url")->label(t("URL"))->id("g-url")->value($user->url);
$form->add_rules_from(self::get_edit_rules());
module::event("user_edit_form", $user, $form);
$group->submit("")->value(t("Save"));
+
+ if (!$writable) {
+ foreach ($group->inputs as $input) {
+ $input->disabled("disabled");
+ }
+ }
return $form;
}
static function get_edit_form_admin($user) {
+ $writable = self::is_writable();
$form = new Forge(
"admin/users/edit_user/$user->id", "", "post", array("id" => "g-edit-user-form"));
$group = $form->group("edit_user")->label(t("Edit User"));
@@ -51,9 +61,11 @@ class user_Core {
"in_use", t("There is already a user with that username"));
$group->input("full_name")->label(t("Full Name"))->id("g-fullname")->value($user->full_name);
self::_add_locale_dropdown($group, $user);
- $group->password("password")->label(t("Password"))->id("g-password");
- $group->password("password2")->label(t("Confirm Password"))->id("g-password2")
- ->matches($group->password);
+ if ($writable) {
+ $group->password("password")->label(t("Password"))->id("g-password");
+ $group->password("password2")->label(t("Confirm Password"))->id("g-password2")
+ ->matches($group->password);
+ }
$group->input("email")->label(t("Email"))->id("g-email")->value($user->email);
$group->input("url")->label(t("URL"))->id("g-url")->value($user->url);
$group->checkbox("admin")->label(t("Admin"))->id("g-admin")->checked($user->admin);
@@ -61,6 +73,11 @@ class user_Core {
module::event("user_edit_form_admin", $user, $form);
$group->submit("")->value(t("Modify User"));
+ if (!$writable) {
+ foreach ($group->inputs as $input) {
+ $input->disabled("disabled");
+ }
+ }
return $form;
}
@@ -235,6 +252,16 @@ class user_Core {
}
/**
+ * Determine if a feature is supported by the driver.
+ *
+ * @param string $feature the name of the feature to check
+ * @return boolean true if supported
+ */
+ static function is_writable() {
+ return Identity::instance()->is_writable();
+ }
+
+ /**
* Return the guest user.
*
* @todo consider caching
diff --git a/modules/gallery/libraries/Identity.php b/modules/gallery/libraries/Identity.php
index a24e6226..fec822db 100644
--- a/modules/gallery/libraries/Identity.php
+++ b/modules/gallery/libraries/Identity.php
@@ -93,6 +93,17 @@ class Identity_Core {
}
/**
+ * Determine if a feature is supported by the driver.
+ *
+ * @param string $feature the name of the feature to check
+ * @return boolean true if supported
+ */
+ public function is_writable() {
+ return !empty($this->config["allow_updates"]);
+ }
+
+
+ /**
* Return the guest user.
*
* @todo consider caching
diff --git a/modules/gallery/libraries/drivers/Identity.php b/modules/gallery/libraries/drivers/Identity.php
index e67547be..a92958c7 100644
--- a/modules/gallery/libraries/drivers/Identity.php
+++ b/modules/gallery/libraries/drivers/Identity.php
@@ -176,7 +176,6 @@ abstract class User_Definition {
case "hash":
case "url":
case "locale":
- Kohana::log("error", "__set($column, $value)");
$this->user->$column = $value;
break;
default:
diff --git a/modules/gallery/views/admin_users.html.php b/modules/gallery/views/admin_users.html.php
index a127bc15..82d0926c 100644
--- a/modules/gallery/views/admin_users.html.php
+++ b/modules/gallery/views/admin_users.html.php
@@ -2,7 +2,7 @@
<script type="text/javascript">
var add_user_to_group_url = "<?= url::site("admin/users/add_user_to_group/__USERID__/__GROUPID__?csrf=$csrf") ?>";
$(document).ready(function(){
- $("#g-user-admin-list .core-info").draggable({
+ $("#g-user-admin-list .g-draggable").draggable({
helper: "clone"
});
$("#g-group-admin .g-group").droppable({
@@ -20,6 +20,7 @@
});
$("#group-1").droppable("destroy");
$("#group-2").droppable("destroy");
+ $(".g-group-disable").droppable("destroy");
});
var reload_group = function(group_id) {
@@ -42,12 +43,14 @@
}
</script>
<div class="g-block">
+ <? if (!empty($writable)): ?>
<a href="<?= url::site("admin/users/add_user_form") ?>"
class="g-dialog-link g-button g-right ui-icon-left ui-state-default ui-corner-all"
title="<?= t("Create a new user")->for_html_attr() ?>">
<span class="ui-icon ui-icon-circle-plus"></span>
<?= t("Add a new user") ?>
</a>
+ <? endif ?>
<h2>
<?= t("User Admin") ?>
@@ -65,7 +68,7 @@
<? foreach ($users as $i => $user): ?>
<tr id="g-user-<?= $user->id ?>" class="<?= text::alternate("g-odd", "g-even") ?> user <?= $user->admin ? "admin" : "" ?>">
- <td id="user-<?= $user->id ?>" class="core-info g-draggable">
+ <td id="user-<?= $user->id ?>" class="core-info <?= !empty($writable) ? "g-draggable" : "" ?> ">
<img src="<?= $user->avatar_url(20, $theme->url("images/avatar.jpg", true)) ?>"
title="<?= t("Drag user onto group below to add as a new member")->for_html_attr() ?>"
alt="<?= html::clean_attribute($user->name) ?>"
@@ -86,15 +89,19 @@
<a href="<?= url::site("admin/users/edit_user_form/$user->id") ?>"
open_text="<?= t("close") ?>"
class="g-panel-link g-button ui-state-default ui-corner-all ui-icon-left">
- <span class="ui-icon ui-icon-pencil"></span><span class="g-button-text"><?= t("edit") ?></span></a>
- <? if (user::active()->id != $user->id && !$user->guest): ?>
- <a href="<?= url::site("admin/users/delete_user_form/$user->id") ?>"
- class="g-dialog-link g-button ui-state-default ui-corner-all ui-icon-left">
- <span class="ui-icon ui-icon-trash"></span><?= t("delete") ?></a>
- <? else: ?>
- <span title="<?= t("This user cannot be deleted")->for_html_attr() ?>"
- class="g-button ui-state-disabled ui-corner-all ui-icon-left">
- <span class="ui-icon ui-icon-trash"></span><?= t("delete") ?></span>
+ <span class="ui-icon ui-icon-pencil"></span><span class="g-button-text">
+ <?= (!empty($writable)) ? t("edit") : t("display") ?>
+ </span></a>
+ <? if (!empty($writable)): ?>
+ <? if (user::active()->id != $user->id && !$user->guest): ?>
+ <a href="<?= url::site("admin/users/delete_user_form/$user->id") ?>"
+ class="g-dialog-link g-button ui-state-default ui-corner-all ui-icon-left">
+ <span class="ui-icon ui-icon-trash"></span><?= t("delete") ?></a>
+ <? else: ?>
+ <span title="<?= t("This user cannot be deleted")->for_html_attr() ?>"
+ class="g-button ui-state-disabled ui-corner-all ui-icon-left">
+ <span class="ui-icon ui-icon-trash"></span><?= t("delete") ?></span>
+ <? endif ?>
<? endif ?>
</td>
</tr>
@@ -104,12 +111,14 @@
</div>
<div id="g-group-admin" class="g-block g-clearfix">
+ <? if (!empty($writable)): ?>
<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() ?>">
<span class="ui-icon ui-icon-circle-plus"></span>
<?= t("Add a new group") ?>
</a>
+ <? endif ?>
<h2>
<?= t("Group Admin") ?>
@@ -118,8 +127,9 @@
<div class="g-block-content">
<ul>
<? foreach ($groups as $i => $group): ?>
- <li id="group-<?= $group->id ?>" class="g-group <?= ($group->special ? "g-default-group" : "") ?>" />
- <? $v = new View("admin_users_group.html"); $v->group = $group; ?>
+ <? $class = !empty($writable) ? "" : "g-group-disable" ?>
+ <li id="group-<?= $group->id ?>" class="g-group <?= $class ?> <?= ($group->special ? "g-default-group" : "") ?>" />
+ <? $v = new View("admin_users_group.html"); $v->group = $group; $v->writable = !empty($writable) ?>
<?= $v ?>
</li>
<? endforeach ?>
diff --git a/modules/gallery/views/admin_users_group.html.php b/modules/gallery/views/admin_users_group.html.php
index db3645a0..539f69b7 100644
--- a/modules/gallery/views/admin_users_group.html.php
+++ b/modules/gallery/views/admin_users_group.html.php
@@ -4,7 +4,7 @@
<? if (!$group->special): ?>
<a href="<?= url::site("admin/users/delete_group_form/$group->id") ?>"
title="<?= t("Delete the %name group", array("name" => $group->name))->for_html_attr() ?>"
- class="g-dialog-link g-button ui-state-default ui-corner-all">
+ class="g-dialog-link g-button ui-state-default ui-corner-all <?= !empty($writable) ? "" : "ui-state-disabled" ?>">
<span class="ui-icon ui-icon-trash"><?= t("delete") ?></span></a>
<? else: ?>
<a title="<?= t("This default group cannot be deleted")->for_html_attr() ?>"
@@ -20,7 +20,7 @@
<?= html::clean($user->name) ?>
<? if (!$group->special): ?>
<a href="javascript:remove_user(<?= $user->id ?>, <?= $group->id ?>)"
- class="g-button ui-state-default ui-corner-all ui-icon-left"
+ class="g-button ui-state-default ui-corner-all ui-icon-left <?= !empty($writable) ? "" : "ui-state-disabled" ?>"
title="<?= t("Remove %user from %group group",
array("user" => $user->name, "group" => $group->name))->for_html_attr() ?>">
<span class="ui-icon ui-icon-closethick"><?= t("remove") ?></span>
diff --git a/modules/gallery/views/login.html.php b/modules/gallery/views/login.html.php
index 049ba043..fa6308ae 100644
--- a/modules/gallery/views/login.html.php
+++ b/modules/gallery/views/login.html.php
@@ -10,7 +10,7 @@
<li class="first">
<?= 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() .
+ '" title="' . ($writable ? t("Edit Your Profile")->for_html_attr() : t("Display Your Profile")->for_html_attr()) .
'" id="g-user-profile-link" class="g-dialog-link">' .
html::clean($user->display_name()) . '</a>'))) ?>
</li>
diff --git a/themes/admin_wind/css/screen.css b/themes/admin_wind/css/screen.css
index 3573df57..79382198 100644
--- a/themes/admin_wind/css/screen.css
+++ b/themes/admin_wind/css/screen.css
@@ -567,7 +567,8 @@ li.g-group .g-user .g-button {
vertical-align: middle;
}
-li.g-default-group h4, li.g-default-group .g-user {
+li.g-default-group h4, li.g-default-group .g-user,
+li.g-group-disable h4, li.g-group-disable .g-user {
color: gray;
}