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 ++-- mod/profile/defaultprofile.php | 48 ++++++++------- mod/profile/graphics/drag_handle.png | Bin 0 -> 594 bytes mod/profile/languages/en.php | 14 ++--- mod/profile/manifest.xml | 4 +- mod/profile/start.php | 1 + mod/profile/vendor/jq.editable.min.js | 10 +++ .../views/default/profile/editdefaultprofile.php | 6 +- .../default/profile/editdefaultprofileitems.php | 68 +++++++++++++++++++++ 13 files changed, 191 insertions(+), 50 deletions(-) create mode 100644 mod/profile/actions/editfield.php create mode 100644 mod/profile/actions/reorder.php create mode 100644 mod/profile/graphics/drag_handle.png create mode 100644 mod/profile/vendor/jq.editable.min.js create mode 100644 mod/profile/views/default/profile/editdefaultprofileitems.php 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'); diff --git a/mod/profile/defaultprofile.php b/mod/profile/defaultprofile.php index 55638ba02..34e0af2d3 100644 --- a/mod/profile/defaultprofile.php +++ b/mod/profile/defaultprofile.php @@ -1,7 +1,7 @@ @@ -19,31 +19,35 @@ $form = elgg_view('profile/editdefaultprofile'); set_context('search'); - // List form elements $n = 0; $loaded_defaults = array(); -while ($translation = get_plugin_setting("admin_defined_profile_$n", 'profile')) -{ - $type = get_plugin_setting("admin_defined_profile_type_$n", 'profile'); - $listing .= elgg_view("profile/", array('value' => $translation)); - - $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even'; - - $listing .= "

$translation: "; - $listing .= elgg_view("output/{$type}",array('value' => " [$type]")); - $listing .= "

"; - - $n++; +$items = array(); +if ($fieldlist = get_plugin_setting('user_defined_fields', 'profile')) { + $fieldlistarray = explode(',', $fieldlist); + foreach($fieldlistarray as $listitem) { + if ($translation = get_plugin_setting("admin_defined_profile_{$listitem}", 'profile')) { + $item = new stdClass; + $item->translation = $translation; + $item->shortname = $listitem; + $item->name = "admin_defined_profile_{$listitem}"; + $item->type = get_plugin_setting("admin_defined_profile_type_{$listitem}", 'profile'); + $items[] = $item; + } + } } -$listing .= "
" . elgg_view('input/form', - array( - 'body' => elgg_view('input/submit', array('value' => elgg_echo('profile:resetdefault'),'class' => 'action_button disabled')), - 'action' => $CONFIG->wwwroot . 'action/profile/editdefault/reset' - ) -) . "
"; +$listing = elgg_view('profile/editdefaultprofileitems',array('items' => $items, 'fieldlist' => $fieldlist)); + +$listing .= elgg_view('input/form', + array ( + 'body' => elgg_view('input/submit', array('value' => elgg_echo('profile:resetdefault'))), + 'action' => $CONFIG->wwwroot . 'action/profile/editdefault/reset' + ) + ); set_context('admin'); - -page_draw(elgg_echo('profile:edit:default'),elgg_view_layout("one_column_with_sidebar", $title . $form . $listing)); \ No newline at end of file + +$body = elgg_view_layout("one_column_with_sidebar", $title . $form . $listing); + +page_draw(elgg_echo('profile:edit:default'), $body); \ No newline at end of file diff --git a/mod/profile/graphics/drag_handle.png b/mod/profile/graphics/drag_handle.png new file mode 100644 index 000000000..2e9bc42be Binary files /dev/null and b/mod/profile/graphics/drag_handle.png differ diff --git a/mod/profile/languages/en.php b/mod/profile/languages/en.php index 7430f9596..dedcdcd97 100644 --- a/mod/profile/languages/en.php +++ b/mod/profile/languages/en.php @@ -10,7 +10,7 @@ $english = array( */ 'profile' => "Profile", - 'profile:edit:default' => 'Replace profile fields', + 'profile:edit:default' => 'Profile fields', 'profile:preview' => 'Preview', /** @@ -72,12 +72,12 @@ $english = array( 'profile:saved' => "Your profile was successfully saved.", 'profile:icon:uploaded' => "Your profile picture was successfully uploaded.", - + /** * Profile comment wall **/ - 'profile:commentwall:add' => "Add to the wall", - 'profile:commentwall:posted' => "You successfully posted on the comment wall.", + 'profile:commentwall:add' => "Add to the wall", + 'profile:commentwall:posted' => "You successfully posted on the comment wall.", 'profile:commentwall:deleted' => "You successfully deleted the message.", 'profile:commentwall:blank' => "Sorry; you need to actually put something in the message area before we can save it.", 'profile:commentwall:notfound' => "Sorry; we could not find the specified item.", @@ -85,15 +85,15 @@ $english = array( 'profile:commentwall:none' => "No comment wall posts found.", 'profile:commentwall:somethingwentwrong' => "Something went wrong when trying to save your message, make sure you actually wrote a message.", 'profile:commentwall:failure' => "An unexpected error occurred when adding your message. Please try again.", - + /** * Email messages commentwall */ - + 'profile:comment:subject' => 'You have a new message board comment!', 'profile:comment:body' => "You have a new message board comment from %s. It reads: - + %s diff --git a/mod/profile/manifest.xml b/mod/profile/manifest.xml index 2f53eae0d..902292379 100644 --- a/mod/profile/manifest.xml +++ b/mod/profile/manifest.xml @@ -1,7 +1,9 @@ - + + + diff --git a/mod/profile/start.php b/mod/profile/start.php index 13ddf3188..e08243818 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -295,5 +295,6 @@ register_action("profile/cropicon",false,$CONFIG->pluginspath . "profile/actions register_action("profile/editdefault",false,$CONFIG->pluginspath . "profile/actions/editdefault.php", true); register_action("profile/editdefault/delete",false,$CONFIG->pluginspath . "profile/actions/deletedefaultprofileitem.php", true); register_action("profile/editdefault/reset",false,$CONFIG->pluginspath . "profile/actions/resetdefaultprofile.php", true); +register_action("profile/editdefault/reorder",false,$CONFIG->pluginspath . "profile/actions/reorder.php", true); register_action("profile/addcomment",false,$CONFIG->pluginspath . "profile/actions/addcomment.php"); register_action("profile/deletecomment",false,$CONFIG->pluginspath . "profile/actions/deletecomment.php"); \ No newline at end of file diff --git a/mod/profile/vendor/jq.editable.min.js b/mod/profile/vendor/jq.editable.min.js new file mode 100644 index 000000000..28bf89d3a --- /dev/null +++ b/mod/profile/vendor/jq.editable.min.js @@ -0,0 +1,10 @@ +/* + * Editable 1.3.3 + * + * Copyright (c) 2009 Arash Karimzadeh (arashkarimzadeh.com) + * Licensed under the MIT (MIT-LICENSE.txt) + * http://www.opensource.org/licenses/mit-license.php + * + * Date: Mar 02 2009 + */ +(function($){$.fn.editable=function(options){var defaults={onEdit:null,onSubmit:null,onCancel:null,editClass:null,submit:null,cancel:null,type:"text",submitBy:"blur",editBy:"click",options:null};if(options=="disable"){return this.unbind(this.data("editable.options").editBy,this.data("editable.options").toEditable)}if(options=="enable"){return this.bind(this.data("editable.options").editBy,this.data("editable.options").toEditable)}if(options=="destroy"){return this.unbind(this.data("editable.options").editBy,this.data("editable.options").toEditable).data("editable.previous",null).data("editable.current",null).data("editable.options",null)}var options=$.extend(defaults,options);options.toEditable=function(){$this=$(this);$this.data("editable.current",$this.html());opts=$this.data("editable.options");$.editableFactory[opts.type].toEditable($this.empty(),opts);$this.data("editable.previous",$this.data("editable.current")).children().focus().addClass(opts.editClass);if(opts.submit){$("