From 68f2c92868ddf477568c1dcbe6c58bc2f3375d33 Mon Sep 17 00:00:00 2001 From: brettp Date: Wed, 7 Apr 2010 16:11:29 +0000 Subject: First go at merging in draggable profile fields. Added categories to profile plugin. git-svn-id: http://code.elgg.org/elgg/trunk@5652 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/profile/actions/deletedefaultprofileitem.php | 20 +++++++++++++++----- mod/profile/actions/editdefault.php | 20 ++++++++++++++------ mod/profile/actions/editfield.php | 21 +++++++++++++++++++++ mod/profile/actions/reorder.php | 17 +++++++++++++++++ mod/profile/actions/resetdefaultprofile.php | 12 ++++++------ 5 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 mod/profile/actions/editfield.php create mode 100644 mod/profile/actions/reorder.php (limited to 'mod/profile/actions') diff --git a/mod/profile/actions/deletedefaultprofileitem.php b/mod/profile/actions/deletedefaultprofileitem.php index b5b2eba84..7d431020d 100644 --- a/mod/profile/actions/deletedefaultprofileitem.php +++ b/mod/profile/actions/deletedefaultprofileitem.php @@ -1,7 +1,7 @@ @@ -12,11 +12,21 @@ global $CONFIG; admin_gatekeeper(); - + $id = (int)get_input('id'); - -if ( ($id) && (set_plugin_setting("admin_defined_profile_$id", '', 'profile')) && - (set_plugin_setting("admin_defined_profile_type_$id", '', 'profile'))) { + +$fieldlist = get_plugin_setting('user_defined_fields', 'profile'); +if (!$fieldlist) { + $fieldlist = ''; +} + +$fieldlist = str_replace("{$id},", "", $fieldlist); +$fieldlist = str_replace(",{$id}", "", $fieldlist); +$fieldlist = str_replace("{$id}", "", $fieldlist); + +if (($id) && (set_plugin_setting("admin_defined_profile_$id", '', 'profile')) && + (set_plugin_setting("admin_defined_profile_type_$id", '', 'profile')) && + set_plugin_setting('user_defined_fields',$fieldlist,'profile')) { system_message(elgg_echo('profile:editdefault:delete:success')); } else { register_error(elgg_echo('profile:editdefault:delete:fail')); diff --git a/mod/profile/actions/editdefault.php b/mod/profile/actions/editdefault.php index 7f5fe0004..70e3b5cd8 100644 --- a/mod/profile/actions/editdefault.php +++ b/mod/profile/actions/editdefault.php @@ -15,15 +15,23 @@ admin_gatekeeper(); $label = sanitise_string(get_input('label')); $type = sanitise_string(get_input('type')); +$fieldlist = get_plugin_setting('user_defined_fields', 'profile'); +if (!$fieldlist) { + $fieldlist = ''; +} + if (($label) && ($type)){ - // find next index for new field - $n = 0; - while (get_plugin_setting("admin_defined_profile_$n", 'profile')) { - $n++; + // Assign a random name + $n = md5(time().rand(0,9999)); + + if (!empty($fieldlist)) { + $fieldlist .= ','; } + $fieldlist .= $n; - if ( (set_plugin_setting("admin_defined_profile_$n", $label, 'profile')) && - (set_plugin_setting("admin_defined_profile_type_$n", $type, 'profile'))) { + if ((set_plugin_setting("admin_defined_profile_$n", $label, 'profile')) && + (set_plugin_setting("admin_defined_profile_type_$n", $type, 'profile')) && + set_plugin_setting('user_defined_fields',$fieldlist,'profile')) { system_message(elgg_echo('profile:editdefault:success')); } else { register_error(elgg_echo('profile:editdefault:fail')); diff --git a/mod/profile/actions/editfield.php b/mod/profile/actions/editfield.php new file mode 100644 index 000000000..c26dfa4d9 --- /dev/null +++ b/mod/profile/actions/editfield.php @@ -0,0 +1,21 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +admin_gatekeeper(); + +$field = get_input('field'); +$text = get_input('value'); + +set_plugin_setting("admin_defined_profile_{$field}",$text,'profile'); + +echo $text; + +exit; \ No newline at end of file diff --git a/mod/profile/actions/reorder.php b/mod/profile/actions/reorder.php new file mode 100644 index 000000000..a189b0513 --- /dev/null +++ b/mod/profile/actions/reorder.php @@ -0,0 +1,17 @@ + + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +admin_gatekeeper(); +$ordering = get_input('fieldorder'); +//if (!empty($ordering)) +$result = set_plugin_setting('user_defined_fields',$ordering,'profile'); + +exit; \ No newline at end of file diff --git a/mod/profile/actions/resetdefaultprofile.php b/mod/profile/actions/resetdefaultprofile.php index a6c90d4b7..4ee87dbf9 100644 --- a/mod/profile/actions/resetdefaultprofile.php +++ b/mod/profile/actions/resetdefaultprofile.php @@ -12,12 +12,12 @@ global $CONFIG; admin_gatekeeper(); -$n = 0; -while (get_plugin_setting("admin_defined_profile_$n", 'profile')) { - set_plugin_setting("admin_defined_profile_$n", '', 'profile'); - set_plugin_setting("admin_defined_profile_type_$n", '', 'profile'); - - $n++; +if ($fieldlist = get_plugin_setting('user_defined_fields', 'profile')) { + $fieldlistarray = explode(',', $fieldlist); + foreach($fieldlistarray as $listitem) { + set_plugin_setting("admin_defined_profile_{$listitem}", '', 'profile'); + set_plugin_setting("admin_defined_profile_type_{$listitem}", '', 'profile'); + } } set_plugin_setting('user_defined_fields', FALSE, 'profile'); -- cgit v1.2.3