diff options
| -rw-r--r-- | mod/profile/actions/deletedefaultprofileitem.php | 20 | ||||
| -rw-r--r-- | mod/profile/actions/editdefault.php | 20 | ||||
| -rw-r--r-- | mod/profile/actions/editfield.php | 21 | ||||
| -rw-r--r-- | mod/profile/actions/reorder.php | 17 | ||||
| -rw-r--r-- | mod/profile/actions/resetdefaultprofile.php | 12 | ||||
| -rw-r--r-- | mod/profile/defaultprofile.php | 48 | ||||
| -rw-r--r-- | mod/profile/graphics/drag_handle.png | bin | 0 -> 594 bytes | |||
| -rw-r--r-- | mod/profile/languages/en.php | 14 | ||||
| -rw-r--r-- | mod/profile/manifest.xml | 4 | ||||
| -rw-r--r-- | mod/profile/start.php | 1 | ||||
| -rw-r--r-- | mod/profile/vendor/jq.editable.min.js | 10 | ||||
| -rw-r--r-- | mod/profile/views/default/profile/editdefaultprofile.php | 6 | ||||
| -rw-r--r-- | mod/profile/views/default/profile/editdefaultprofileitems.php | 68 | 
13 files changed, 191 insertions, 50 deletions
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 @@  <?php  /**   * Elgg profile plugin edit default profile action removal - *  + *   * @package ElggProfile   * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2   * @author Curverider Ltd <info@elgg.com> @@ -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 @@ +<?php
 +/**
 + * Elgg profile plugin edit default profile action
 + *
 + * @package ElggProfile
 + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
 + * @author Curverider Ltd <info@elgg.com>
 + * @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 @@ +<?php
 +/**
 + * Elgg profile plugin reorder fields
 + *
 + * @package ElggProfile
 + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
 + * @author Curverider Ltd <info@elgg.com>
 + * @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 @@  <?php  /**   * Elgg profile index - *  + *   * @package ElggProfile   * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2   * @author Curverider Ltd <info@elgg.com> @@ -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 .= "<p class=\"{$even_odd}\"><b>$translation: </b>"; -	$listing .= elgg_view("output/{$type}",array('value' => " [$type]")); -	$listing .= "</p>"; -	 -	$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 .= "<div class='default_profile_reset'>" . 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' -	) -) . "</div>"; +$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 Binary files differnew file mode 100644 index 000000000..2e9bc42be --- /dev/null +++ b/mod/profile/graphics/drag_handle.png 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 @@  <?xml version="1.0" encoding="UTF-8"?>  <plugin_manifest>          <field key="author" value="Curverider ltd" /> -        <field key="version" value="1.7" /> +        <field key="version" value="1.8" /> +		<field key="category" value="bundled" /> +		<field key="category" value="social" />          <field key="description" value="Elgg profile plugin." />          <field key="website" value="http://www.elgg.org/" />          <field key="copyright" value="(C) Curverider 2008-2010" /> 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){$("<button/>").appendTo($this).html(opts.submit).one("mouseup",function(){opts.toNonEditable($(this).parent(),true)})}else{$this.one(opts.submitBy,function(){opts.toNonEditable($(this),true)}).children().one(opts.submitBy,function(){opts.toNonEditable($(this).parent(),true)})}if(opts.cancel){$("<button/>").appendTo($this).html(opts.cancel).one("mouseup",function(){opts.toNonEditable($(this).parent(),false)})}if($.isFunction(opts.onEdit)){opts.onEdit.apply($this,[{current:$this.data("editable.current"),previous:$this.data("editable.previous")}])}};options.toNonEditable=function($this,change){opts=$this.data("editable.options");$this.one(opts.editBy,opts.toEditable).data("editable.current",change?$.editableFactory[opts.type].getValue($this,opts):$this.data("editable.current")).html(opts.type=="password"?"*****":$this.data("editable.current"));var func=null;if($.isFunction(opts.onSubmit)&&change==true){func=opts.onSubmit}else{if($.isFunction(opts.onCancel)&&change==false){func=opts.onCancel}}if(func!=null){func.apply($this,[{current:$this.data("editable.current"),previous:$this.data("editable.previous")}])}};this.data("editable.options",options);return this.one(options.editBy,options.toEditable)};$.editableFactory={text:{toEditable:function($this,options){$("<input/>").appendTo($this).val($this.data("editable.current"))},getValue:function($this,options){return $this.children().val()}},password:{toEditable:function($this,options){$this.data("editable.current",$this.data("editable.password"));$this.data("editable.previous",$this.data("editable.password"));$('<input type="password"/>').appendTo($this).val($this.data("editable.current"))},getValue:function($this,options){$this.data("editable.password",$this.children().val());return $this.children().val()}},textarea:{toEditable:function($this,options){$("<textarea/>").appendTo($this).val($this.data("editable.current"))},getValue:function($this,options){return $this.children().val()}},select:{toEditable:function($this,options){$select=$("<select/>").appendTo($this);$.each(options.options,function(key,value){$("<option/>").appendTo($select).html(value).attr("value",key)});$select.children().each(function(){var opt=$(this);if(opt.text()==$this.data("editable.current")){return opt.attr("selected","selected").text()}})},getValue:function($this,options){var item=null;$("select",$this).children().each(function(){if($(this).attr("selected")){return item=$(this).text()}});return item}}}})(jQuery);
\ No newline at end of file diff --git a/mod/profile/views/default/profile/editdefaultprofile.php b/mod/profile/views/default/profile/editdefaultprofile.php index 338204d36..ae05e6da1 100644 --- a/mod/profile/views/default/profile/editdefaultprofile.php +++ b/mod/profile/views/default/profile/editdefaultprofile.php @@ -20,9 +20,9 @@ $type_control = elgg_view('input/pulldown', array('internalname' => 'type', 'opt  	'url' => elgg_echo('url'),  	'email' => elgg_echo('email')  ))); -	 -$submit_control = elgg_view('input/submit', array('internalname' => elgg_echo('save'), 'value' => elgg_echo('Add'))); -	 + +$submit_control = elgg_view('input/submit', array('internalname' => elgg_echo('add'), 'value' => elgg_echo('add'))); +  $formbody = <<< END  		<p>$label_text: $label_control  		$type_text: $type_control diff --git a/mod/profile/views/default/profile/editdefaultprofileitems.php b/mod/profile/views/default/profile/editdefaultprofileitems.php new file mode 100644 index 000000000..cfd15247a --- /dev/null +++ b/mod/profile/views/default/profile/editdefaultprofileitems.php @@ -0,0 +1,68 @@ +<script language="javascript" type="text/javascript" src="<?php echo $vars['url']?>mod/profile/vendor/jq.editable.min.js"></script>
 +<script language="javascript" type="text/javascript">
 +var reorderURL = '<?php echo elgg_add_action_tokens_to_url($vars['url'] . 'action/profile/editdefault/reorder', FALSE); ?>';
 +function sortCallback(event, ui) {
 +	var orderArr = $('#sortableList').sortable('toArray');
 +	var orderStr = orderArr.join(',');
 +	console.log(orderArr);
 +	console.log(orderStr);
 +	jQuery.post(reorderURL, {'fieldorder': orderStr});
 +}
 +
 +$(document).ready(function() {
 +	$('#sortableList').sortable({
 +		items: 'li',
 +		handle: '.handle',
 +		stop: sortCallback
 +	});
 +});
 +
 +</script>
 +<script language="javascript" type="text/javascript" src="<?php echo $vars['url']; ?>mod/multiadmin/vendors/js/jquery.jeditable.js" ></script>
 +
 +<div id="list">
 +	<ul id="sortableList">
 +<?php
 +
 +	$save = elgg_echo('save');
 +	$cancel = elgg_echo('cancel');
 +
 +	foreach($vars['items'] as $item) {
 +		$url = elgg_add_action_tokens_to_url("{$vars['url']}action/profile/editdefault/editfield");
 +		echo <<< END
 +
 +<script language="javascript" type="text/javascript">
 +
 +	$(function() {
 +		$(".{$item->shortname}_editable").editable("$url", {
 +			type   : 'text',
 +			submitdata: { _method: "post", 'field': '{$item->shortname}' },
 +			onblur: 'submit',
 +			width:'300px',
 +			height:'none',
 +			style:'display:inline;',
 +			tooltip:'Click to edit label'
 +		});
 +	});
 +
 +</script>
 +
 +END;
 +
 +		echo elgg_view("profile/", array('value' => $item->translation));
 +
 +		//$even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even';
 +		$url = elgg_add_action_tokens_to_url("{$vars['url']}action/profile/editdefault/delete?id={$item->shortname}");
 +		echo "<li id=\"{$item->shortname}\"><div class=\"delete_note\" style=\"float:right\"><a href=\"$url\">" . elgg_echo('delete') . "</a></div>";
 +		echo "<img width='16' height='16' class='handle' alt='move' title='Drag here to reorder this item' src='{$vars['url']}mod/profile/graphics/drag_handle.png'/>";
 +		echo "<b class=\"profile_field_editable\"><span class=\"{$item->shortname}_editable\">$item->translation</span></b>:  [".elgg_echo($item->type)."]";
 +		echo "</li>";
 +
 +	}
 +
 +?>
 +	</ul>
 +</div>
 +<div id="tempList"></div>
 +
 +<input name="sortableListOrder" type="hidden" id="sortableListOrder" value="<?php echo $vars['fieldlist']; ?>" />
  | 
