diff options
| author | Cash Costello <cash.costello@gmail.com> | 2011-12-22 08:12:07 -0500 | 
|---|---|---|
| committer | Cash Costello <cash.costello@gmail.com> | 2011-12-22 08:12:07 -0500 | 
| commit | e49df853b2cc3a6a9bc2dd527a64951050142eb9 (patch) | |
| tree | 6f485b560f89331c65fad3993e055a1834b07177 /engine/lib | |
| parent | 5e5b3705a5ca7b66dfe386490c5570af88b49009 (diff) | |
| parent | fea599f1653d7206e34ac33c0c0a668cb587bc20 (diff) | |
| download | elgg-e49df853b2cc3a6a9bc2dd527a64951050142eb9.tar.gz elgg-e49df853b2cc3a6a9bc2dd527a64951050142eb9.tar.bz2 | |
Merge branch '1.8' after 1.8.2 release
Conflicts:
	version.php
Diffstat (limited to 'engine/lib')
| -rw-r--r-- | engine/lib/admin.php | 5 | ||||
| -rw-r--r-- | engine/lib/annotations.php | 32 | ||||
| -rw-r--r-- | engine/lib/languages.php | 11 | ||||
| -rw-r--r-- | engine/lib/navigation.php | 50 | ||||
| -rw-r--r-- | engine/lib/output.php | 7 | ||||
| -rw-r--r-- | engine/lib/pagehandler.php | 33 | ||||
| -rw-r--r-- | engine/lib/user_settings.php | 7 | ||||
| -rw-r--r-- | engine/lib/users.php | 9 | ||||
| -rw-r--r-- | engine/lib/views.php | 1 | ||||
| -rw-r--r-- | engine/lib/widgets.php | 87 | 
10 files changed, 179 insertions, 63 deletions
| diff --git a/engine/lib/admin.php b/engine/lib/admin.php index 3baf2ff61..a191d740b 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -225,6 +225,7 @@ function admin_init() {  	elgg_register_action('admin/site/update_basic', '', 'admin');  	elgg_register_action('admin/site/update_advanced', '', 'admin'); +	elgg_register_action('admin/site/flush_cache', '', 'admin');  	elgg_register_action('admin/menu/save', '', 'admin'); @@ -301,7 +302,7 @@ function admin_init() {  	}  	// widgets -	$widgets = array('online_users', 'new_users', 'content_stats', 'admin_welcome'); +	$widgets = array('online_users', 'new_users', 'content_stats', 'admin_welcome', 'control_panel');  	foreach ($widgets as $widget) {  		elgg_register_widget_type(  				$widget, @@ -616,7 +617,7 @@ function elgg_add_admin_widgets($event, $type, $user) {  	// In the form column => array of handlers in order, top to bottom  	$adminWidgets = array( -		1 => array('admin_welcome'), +		1 => array('control_panel', 'admin_welcome'),  		2 => array('online_users', 'new_users', 'content_stats'),  	); diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index e40ab2e39..bfd40d1e8 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -529,6 +529,20 @@ function elgg_annotation_exists($entity_guid, $annotation_type, $owner_guid = NU  }  /** + * Return the URL for a comment + * + * @param ElggAnnotation $comment The comment object  + * @return string + * @access private + */ +function elgg_comment_url_handler(ElggAnnotation $comment) { +	$entity = $comment->getEntity(); +	if ($entity) { +		return $entity->getURL() . '#item-annotation-' . $comment->id; +	} +} + +/**   * Register an annotation url handler.   *   * @param string $function_name The function. @@ -540,11 +554,6 @@ function elgg_register_annotation_url_handler($extender_name = "all", $function_  	return elgg_register_extender_url_handler('annotation', $extender_name, $function_name);  } -/** Register the hook */ -elgg_register_plugin_hook_handler("export", "all", "export_annotation_plugin_hook", 2); - -elgg_register_plugin_hook_handler('unit_test', 'system', 'annotations_test'); -  /**   * Register annotation unit tests   * @access private @@ -554,3 +563,16 @@ function annotations_test($hook, $type, $value, $params) {  	$value[] = $CONFIG->path . 'engine/tests/api/annotations.php';  	return $value;  } + +/** + * Initialize the annotation library + * @access private + */ +function elgg_annotations_init() { +	elgg_register_annotation_url_handler('generic_comment', 'elgg_comment_url_handler'); + +	elgg_register_plugin_hook_handler("export", "all", "export_annotation_plugin_hook", 2); +	elgg_register_plugin_hook_handler('unit_test', 'system', 'annotations_test'); +} + +elgg_register_event_handler('init', 'system', 'elgg_annotations_init'); diff --git a/engine/lib/languages.php b/engine/lib/languages.php index 7607ea3bf..0400843af 100644 --- a/engine/lib/languages.php +++ b/engine/lib/languages.php @@ -301,4 +301,15 @@ function get_missing_language_keys($language) {  	return false;  } +/** + * Initialize the language library + * @access private + */ +function elgg_languages_init() { +	$lang = get_current_language(); +	elgg_register_simplecache_view("cache/js/languages/$lang"); +} + +elgg_register_event_handler('init', 'system', 'elgg_languages_init'); +  register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/"); diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php index 176790188..956ca220a 100644 --- a/engine/lib/navigation.php +++ b/engine/lib/navigation.php @@ -385,6 +385,55 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {  }  /** + * Widget menu is a set of widget controls + * @access private + */ +function elgg_widget_menu_setup($hook, $type, $return, $params) { + +	$widget = $params['entity']; +	$show_edit = elgg_extract('show_edit', $params, true); + +	$collapse = array( +		'name' => 'collapse', +		'text' => ' ', +		'href' => "#elgg-widget-content-$widget->guid", +		'class' => 'elgg-widget-collapse-button', +		'rel' => 'toggle', +		'priority' => 1 +	); +	$return[] = ElggMenuItem::factory($collapse); + +	if ($widget->canEdit()) { +		$delete = array( +			'name' => 'delete', +			'text' => elgg_view_icon('delete-alt'), +			'title' => elgg_echo('widget:delete', array($widget->getTitle())), +			'href' => "action/widgets/delete?widget_guid=$widget->guid", +			'is_action' => true, +			'class' => 'elgg-widget-delete-button', +			'id' => "elgg-widget-delete-button-$widget->guid", +			'priority' => 900 +		); +		$return[] = ElggMenuItem::factory($delete); + +		if ($show_edit) { +			$edit = array( +				'name' => 'settings', +				'text' => elgg_view_icon('settings-alt'), +				'title' => elgg_echo('widget:edit'), +				'href' => "#widget-edit-$widget->guid", +				'class' => "elgg-widget-edit-button", +				'rel' => 'toggle', +				'priority' => 800, +			); +			$return[] = ElggMenuItem::factory($edit); +		} +	} + +	return $return; +} + +/**   * Adds a delete link to "generic_comment" annotations   * @access private   */ @@ -418,6 +467,7 @@ function elgg_nav_init() {  	elgg_register_plugin_hook_handler('prepare', 'menu:site', 'elgg_site_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:river', 'elgg_river_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:entity', 'elgg_entity_menu_setup'); +	elgg_register_plugin_hook_handler('register', 'menu:widget', 'elgg_widget_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:annotation', 'elgg_annotation_menu_setup');  } diff --git a/engine/lib/output.php b/engine/lib/output.php index 989eca60e..6554481f5 100644 --- a/engine/lib/output.php +++ b/engine/lib/output.php @@ -234,7 +234,7 @@ function elgg_clean_vars(array $vars = array()) {   *   * @example   * elgg_normalize_url('');                   // 'http://my.site.com/' - * elgg_normalize_url('dashboard');       // 'http://my.site.com/dashboard' + * elgg_normalize_url('dashboard');          // 'http://my.site.com/dashboard'   * elgg_normalize_url('http://google.com/'); // no change   * elgg_normalize_url('//google.com/');      // no change   * @@ -257,6 +257,11 @@ function elgg_normalize_url($url) {  		$validated = filter_var($url, FILTER_VALIDATE_URL);  	} +	// work around for handling absoluate IRIs (RFC 3987) - see #4190 +	if (!$validated && (strpos($url, 'http:') === 0) || (strpos($url, 'https:') === 0)) { +		$validated = true; +	} +  	if ($validated) {  		// all normal URLs including mailto:  		return $url; diff --git a/engine/lib/pagehandler.php b/engine/lib/pagehandler.php index aba921416..ffcfc5b6a 100644 --- a/engine/lib/pagehandler.php +++ b/engine/lib/pagehandler.php @@ -110,3 +110,36 @@ function elgg_unregister_page_handler($handler) {  	unset($CONFIG->pagehandler[$handler]);  } + +/** + * Serve an error page + * + * @todo not sending status codes yet + * + * @param string $hook   The name of the hook + * @param string $type   The type of the hook + * @param bool   $result The current value of the hook + * @param array  $params Parameters related to the hook + */ +function elgg_error_page_handler($hook, $type, $result, $params) { +	if (elgg_view_exists("errors/$type")) { +		$content = elgg_view("errors/$type", $params); +	} else { +		$content = elgg_view("errors/default", $params); +	} +	$body = elgg_view_layout('error', array('content' => $content)); +	echo elgg_view_page($title, $body, 'error'); +	exit; +} + +/** + * Initializes the page handler/routing system + * + * @return void + * @access private + */ +function page_handler_init() { +	elgg_register_plugin_hook_handler('forward', '404', 'elgg_error_page_handler'); +} + +elgg_register_event_handler('init', 'system', 'page_handler_init'); diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php index c71670357..af30d8f0d 100644 --- a/engine/lib/user_settings.php +++ b/engine/lib/user_settings.php @@ -346,6 +346,13 @@ function usersettings_init() {  	elgg_register_plugin_hook_handler('usersettings:save', 'user', 'users_settings_save');  	elgg_register_action("usersettings/save"); + +	// extend the account settings form +	elgg_extend_view('forms/account/settings', 'core/settings/account/name', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/password', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/email', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/language', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/default_access', 100);  }  elgg_register_event_handler('init', 'system', 'usersettings_init'); diff --git a/engine/lib/users.php b/engine/lib/users.php index 3a86c1faa..1b3cca799 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1021,7 +1021,7 @@ function elgg_get_user_validation_status($user_guid) {  		return;  	} -	if ($md->value) { +	if ($md[0]->value) {  		return true;  	} @@ -1562,13 +1562,6 @@ function users_init() {  	elgg_register_widget_type('friends', elgg_echo('friends'), elgg_echo('friends:widget:description')); -	// extend the account settings form -	elgg_extend_view('forms/account/settings', 'core/settings/account/name', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/password', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/email', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/language', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/default_access', 100); -  	// Register the user type  	elgg_register_entity_type('user', ''); diff --git a/engine/lib/views.php b/engine/lib/views.php index d3c9ff551..b938dd60e 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -1598,7 +1598,6 @@ function elgg_views_boot() {  	elgg_load_js('jquery');  	elgg_load_js('jquery-ui'); -	elgg_load_js('jquery.form');  	elgg_load_js('elgg');  	elgg_register_simplecache_view('js/lightbox'); diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index 5d18a16b0..46f34391a 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -332,14 +332,14 @@ function elgg_default_widgets_init() {   * @param string $event  The event   * @param string $type   The type of object   * @param object $entity The entity being created - * @return null + * @return void   * @access private   */  function elgg_create_default_widgets($event, $type, $entity) {  	$default_widget_info = elgg_get_config('default_widget_info');  	if (!$default_widget_info || !$entity) { -		return null; +		return;  	}  	$type = $entity->getType(); @@ -347,53 +347,48 @@ function elgg_create_default_widgets($event, $type, $entity) {  	// event is already guaranteed by the hook registration.  	// need to check subtype and type. -	foreach ($default_widget_info as $temp) { -		if ($temp['entity_type'] == $type) { -			if ($temp['entity_subtype'] == ELGG_ENTITIES_ANY_VALUE || $temp['entity_subtype'] == $subtype) { -				$info = $temp; -				break; +	foreach ($default_widget_info as $info) { +		if ($info['entity_type'] == $type) { +			if ($info['entity_subtype'] == ELGG_ENTITIES_ANY_VALUE || $info['entity_subtype'] == $subtype) { + +				// need to be able to access everything +				$old_ia = elgg_set_ignore_access(true); +				elgg_push_context('create_default_widgets'); + +				// pull in by widget context with widget owners as the site +				// not using elgg_get_widgets() because it sorts by columns and we don't care right now. +				$options = array( +					'type' => 'object', +					'subtype' => 'widget', +					'owner_guid' => elgg_get_site_entity()->guid, +					'private_setting_name' => 'context', +					'private_setting_value' => $info['widget_context'], +					'limit' => 0 +				); + +				$widgets = elgg_get_entities_from_private_settings($options); + +				foreach ($widgets as $widget) { +					// change the container and owner +					$new_widget = clone $widget; +					$new_widget->container_guid = $entity->guid; +					$new_widget->owner_guid = $entity->guid; + +					// pull in settings +					$settings = get_all_private_settings($widget->guid); + +					foreach ($settings as $name => $value) { +						$new_widget->$name = $value; +					} + +					$new_widget->save(); +				} + +				elgg_set_ignore_access($old_ia); +				elgg_pop_context();  			}  		}  	} - -	// need to be able to access everything -	$old_ia = elgg_get_ignore_access(true); -	elgg_push_context('create_default_widgets'); - -	// pull in by widget context with widget owners as the site -	// not using elgg_get_widgets() because it sorts by columns and we don't care right now. -	$options = array( -		'type' => 'object', -		'subtype' => 'widget', -		'owner_guid' => elgg_get_site_entity()->guid, -		'private_setting_name' => 'context', -		'private_setting_value' => $info['widget_context'], -		'limit' => 0 -	); - -	$widgets = elgg_get_entities_from_private_settings($options); - -	foreach ($widgets as $widget) { -		// change the container and owner -		$new_widget = clone $widget; -		$new_widget->container_guid = $entity->guid; -		$new_widget->owner_guid = $entity->guid; - -		// pull in settings -		$settings = get_all_private_settings($widget->guid); - -		foreach ($settings as $name => $value) { -			$new_widget->$name = $value; -		} - -		$new_widget->save(); -	} - -	elgg_get_ignore_access($old_ia); -	elgg_pop_context(); - -	// failure here shouldn't stop the event. -	return null;  }  /** | 
