diff options
Diffstat (limited to 'phpBB')
39 files changed, 377 insertions, 175 deletions
diff --git a/phpBB/adm/style/acp_jabber.html b/phpBB/adm/style/acp_jabber.html index 4d0b1b0d97..9246987f1f 100644 --- a/phpBB/adm/style/acp_jabber.html +++ b/phpBB/adm/style/acp_jabber.html @@ -39,7 +39,7 @@  </dl>  <dl>  	<dt><label for="jab_password">{L_JAB_PASSWORD}{L_COLON}</label><br /><span>{L_JAB_PASSWORD_EXPLAIN}</span></dt> -	<dd><input type="password" id="jab_password" name="jab_password" value="{JAB_PASSWORD}" /></dd> +	<dd><input type="password" id="jab_password" name="jab_password" value="{JAB_PASSWORD}" autocomplete="off" /></dd>  </dl>  <!-- IF S_CAN_USE_SSL -->  <dl> diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index 88ef5733fe..cc016e52ee 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -15,7 +15,7 @@ var keymap = {  };  var $dark = $('#darkenwrapper'); -var $loadingIndicator = $('#loading_indicator'); +var $loadingIndicator;  var phpbbAlertTimer = null;  phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); @@ -26,6 +26,11 @@ phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined');   * @returns {object} Returns loadingIndicator.   */  phpbb.loadingIndicator = function() { +	if (!$loadingIndicator) { +		$loadingIndicator = $('<div />', { id: 'loading_indicator' }); +		$loadingIndicator.appendTo('#page-footer'); +	} +  	if (!$loadingIndicator.is(':visible')) {  		$loadingIndicator.fadeIn(phpbb.alertTime);  		// Wait fifteen seconds and display an error if nothing has been returned by then. @@ -264,11 +269,9 @@ phpbb.ajaxify = function(options) {  			} catch (e) {}  			if (typeof responseText === 'string' && responseText.length > 0) {  				errorText = responseText; -			} -			else if (typeof errorThrown === 'string' && errorThrown.length > 0) { +			} else if (typeof errorThrown === 'string' && errorThrown.length > 0) {  				errorText = errorThrown; -			} -			else { +			} else {  				errorText = $dark.attr('data-ajax-error-text-' + textStatus);  				if (typeof errorText !== 'string' || !errorText.length) {  					errorText = $dark.attr('data-ajax-error-text'); @@ -429,7 +432,7 @@ phpbb.search = {  };  /** - * Get cached search data.  + * Get cached search data.   *   * @param {string} id Search ID.   * @returns {bool|object} Cached data object. Returns false if no data exists. @@ -442,7 +445,7 @@ phpbb.search.cache.get = function(id) {  };  /** - * Set search cache data value.  + * Set search cache data value.   *   * @param {string} id		Search ID.   * @param {string} key		Data key. @@ -450,13 +453,13 @@ phpbb.search.cache.get = function(id) {   */  phpbb.search.cache.set = function(id, key, value) {  	if (!this.data[id]) { -		this.data[id] = {results: []}; +		this.data[id] = { results: [] };  	}  	this.data[id][key] = value;  };  /** - * Cache search result.  + * Cache search result.   *   * @param {string} id		Search ID.   * @param {string} keyword	Keyword. @@ -496,7 +499,7 @@ phpbb.search.getKeyword = function($input, keyword, multiline) {  /**   * Get the textarea line number on which the keyword resides - for textareas - * that support multiple keywords (one per line).  + * that support multiple keywords (one per line).   *   * @param {jQuery} $textarea Search textarea.   * @returns {int} The line number. @@ -525,7 +528,8 @@ phpbb.search.setValue = function($input, value, multiline) {  };  /** - * Sets the onclick event to set the value on the input|textarea to the selected search result.  + * Sets the onclick event to set the value on the input|textarea to the + * selected search result.   *   * @param {jQuery} $input		Search input|textarea.   * @param {object} value		Result object. @@ -554,7 +558,7 @@ phpbb.search.setValueOnClick = function($input, value, $row, $container) {  phpbb.search.filter = function(data, event, sendRequest) {  	var $this = $(this),  		dataName = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : $this.attr('name'), -		minLength = parseInt($this.attr('data-min-length')), +		minLength = parseInt($this.attr('data-min-length'), 10),  		searchID = $this.attr('data-results'),  		keyword = phpbb.search.getKeyword($this, data[dataName], $this.attr('data-multiline')),  		cache = phpbb.search.cache.get(searchID), @@ -576,7 +580,10 @@ phpbb.search.filter = function(data, event, sendRequest) {  			} else {  				// Do we already have results for this?  				if (cache.results[keyword]) { -					var response = {keyword: keyword, results: cache.results[keyword]}; +					var response = { +						keyword: keyword, +						results: cache.results[keyword] +					};  					phpbb.search.handleResponse(response, $this, true);  					proceed = false;  				} @@ -587,8 +594,8 @@ phpbb.search.filter = function(data, event, sendRequest) {  					phpbb.search.cache.set(searchID, 'lastSearch', keyword);  					phpbb.search.cache.setResults(searchID, keyword, []);  					proceed = false; -				}		 -			}		 +				} +			}  		}  		if (proceed) { @@ -601,7 +608,7 @@ phpbb.search.filter = function(data, event, sendRequest) {  };  /** - * Handle search result response.  + * Handle search result response.   *   * @param {object} res			Data received from server.   * @param {jQuery} $input		Search input|textarea. @@ -781,7 +788,7 @@ phpbb.timezoneSwitchDate = function(keepSelection) {  	} else {  		$tzSelectDateSuggest.css('display', 'inline');  	} -	 +  	var $tzOptions = $timezone.children('optgroup[data-tz-value="' + $tzDate.val() + '"]').children('option');  	if ($tzOptions.length === 1) { @@ -1006,7 +1013,9 @@ phpbb.resizeTextArea = function($items, options) {  	function resetAutoResize(item) {  		var $item = $(item);  		if ($item.hasClass('auto-resized')) { -			$(item).css({height: '', resize: ''}).removeClass('auto-resized'); +			$(item) +				.css({ height: '', resize: '' }) +				.removeClass('auto-resized');  			configuration.resetCallback.call(item, $item);  		}  	} @@ -1014,7 +1023,9 @@ phpbb.resizeTextArea = function($items, options) {  	function autoResize(item) {  		function setHeight(height) {  			height += parseInt($item.css('height'), 10) - $item.height(); -			$item.css({height: height + 'px', resize: 'none'}).addClass('auto-resized'); +			$item +				.css({ height: height + 'px', resize: 'none' }) +				.addClass('auto-resized');  			configuration.resizeCallback.call(item, $item);  		} @@ -1039,8 +1050,7 @@ phpbb.resizeTextArea = function($items, options) {  		if (height > maxHeight) {  			setHeight(maxHeight); -		} -		else if (scrollHeight > (height + 5)) { +		} else if (scrollHeight > (height + 5)) {  			setHeight(Math.min(maxHeight, scrollHeight));  		}  	} @@ -1157,7 +1167,7 @@ phpbb.applyCodeEditor = function(textarea) {  					var tagLength = startTags[i].length;  					value = value.substring(index + tagLength); -					if (startTags[i].lastIndexOf(startTagsEnd) != tagLength) { +					if (startTags[i].lastIndexOf(startTagsEnd) !== tagLength) {  						index = value.indexOf(startTagsEnd);  						if (index >= 0) { @@ -1333,12 +1343,15 @@ phpbb.toggleDropdown = function() {  					fullFreeSpace = freeSpace + parent.outerWidth();  				options.dropdown.find('.dropdown-contents').each(function() { -					contentWidth = parseInt($(this).outerWidth()); -					$(this).css({marginLeft: 0, left: 0}); +					contentWidth = parseInt($(this).outerWidth(), 10); +					$(this).css({ marginLeft: 0, left: 0 });  				});  				var maxOffset = Math.min(contentWidth, fullFreeSpace) + 'px'; -				options.dropdown.css({'width': maxOffset, 'margin-left': '-' + maxOffset}); +				options.dropdown.css({ +					width: maxOffset, +					marginLeft: -maxOffset +				});  			}  		} else {  			options.dropdown.css('margin-right', '-' + (windowWidth + freeSpace) + 'px'); @@ -1405,9 +1418,7 @@ phpbb.registerDropdown = function(toggle, dropdown, options) {  * @param {int} height Palette cell height.  */  phpbb.colorPalette = function(dir, width, height) { -	var r = 0,  -		g = 0,  -		b = 0, +	var r, g, b,  		numberList = new Array(6),  		color = '',  		html = ''; @@ -1418,32 +1429,33 @@ phpbb.colorPalette = function(dir, width, height) {  	numberList[3] = 'BF';  	numberList[4] = 'FF'; -	var tableClass = (dir == 'h') ? 'horizontal-palette' : 'vertical-palette'; +	var tableClass = (dir === 'h') ? 'horizontal-palette' : 'vertical-palette';  	html += '<table class="not-responsive colour-palette ' + tableClass + '" style="width: auto;">';  	for (r = 0; r < 5; r++) { -		if (dir == 'h') { +		if (dir === 'h') {  			html += '<tr>';  		}  		for (g = 0; g < 5; g++) { -			if (dir == 'v') { +			if (dir === 'v') {  				html += '<tr>';  			}  			for (b = 0; b < 5; b++) { -				color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]); -				html += '<td style="background-color: #' + color + '; width: ' + width + 'px; height: ' + height + 'px;">'; -				html += '<a href="#" data-color="' + color + '" style="display: block; width: ' + width + 'px; height: ' + height + 'px; " alt="#' + color + '" title="#' + color + '"></a>'; +				color = '' + numberList[r] + numberList[g] + numberList[b]; +				html += '<td style="background-color: #' + color + '; width: ' + width + 'px; height: ' + +					height + 'px;"><a href="#" data-color="' + color + '" style="display: block; width: ' + +					width + 'px; height: ' + height + 'px; " alt="#' + color + '" title="#' + color + '"></a>';  				html += '</td>';  			} -			if (dir == 'v') { +			if (dir === 'v') {  				html += '</tr>';  			}  		} -		if (dir == 'h') { +		if (dir === 'h') {  			html += '</tr>';  		}  	} @@ -1530,7 +1542,7 @@ phpbb.toggleSelectSettings = function(el) {  * @returns function  */  phpbb.getFunctionByName = function (functionName) { - 	var namespaces = functionName.split('.'), +	var namespaces = functionName.split('.'),  		func = namespaces.pop(),  		context = window; diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 3845de6c56..96e5ca96e6 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -105,7 +105,7 @@ phpbb.plupload.getIndex = function(attachId) {  /**   * Set the data in phpbb.plupload.data and phpbb.plupload.ids arrays. - *  + *   * @param {Array} data	Array containing the new data to use. In the form of   * array(index => object(property: value). Requires attach_id to be one of the object properties.   */ @@ -121,7 +121,7 @@ phpbb.plupload.setData = function(data) {  /**   * Update the attachment data in the HTML and the phpbb & phpbb.plupload objects. - *  + *   * @param {Array} data			Array containing the new data to use.   * @param {string} action		The action that required the update. Used to update the inline attachment bbcodes.   * @param {int} index			The index from phpbb.plupload_ids that was affected by the action. @@ -138,7 +138,7 @@ phpbb.plupload.update = function(data, action, index, downloadUrl) {  /**   * Update the relevant elements and hidden data for all attachments. - *  + *   * @param {Array} downloadUrl Optional array of download urls to update.   */  phpbb.plupload.updateRows = function(downloadUrl) { @@ -152,7 +152,7 @@ phpbb.plupload.updateRows = function(downloadUrl) {   * using the id "attach-row-tpl" to be present. This snippet is cloned and the   * data for the file inserted into it. The row is then appended or prepended to   * #file-list based on the attach_order setting. - *  + *   * @param {object} file Plupload file object for the new attachment.   */  phpbb.plupload.insertRow = function(file) { @@ -162,7 +162,7 @@ phpbb.plupload.insertRow = function(file) {  	row.find('.file-name').html(plupload.xmlEncode(file.name));  	row.find('.file-size').html(plupload.formatSize(file.size)); -	if (phpbb.plupload.order == 'desc') { +	if (phpbb.plupload.order === 'desc') {  		$('#file-list').prepend(row);  	} else {  		$('#file-list').append(row); @@ -171,7 +171,7 @@ phpbb.plupload.insertRow = function(file) {  /**   * Update the relevant elements and hidden data for an attachment. - *  + *   * @param {int} index The index from phpbb.plupload.ids of the attachment to edit.   * @param {Array} downloadUrl Optional array of download urls to update.   */ @@ -209,7 +209,7 @@ phpbb.plupload.updateHiddenData = function(row, attach, index) {  		var input = $('<input />')  			.attr('type', 'hidden') -			.attr('name', 'attachment_data[' + index + '][' + key +']') +			.attr('name', 'attachment_data[' + index + '][' + key + ']')  			.attr('value', attach[key]);  		$('textarea', row).after(input);  	} @@ -256,7 +256,7 @@ phpbb.plupload.deleteFile = function(row, attachId) {  		// trigger_error() was called which likely means a permission error was encountered.  		if (typeof response.title !== 'undefined') { -			phpbb.plupload.uploader.trigger('Error', {message: response.message}); +			phpbb.plupload.uploader.trigger('Error', { message: response.message });  			// We will have to assume that the deletion failed. So leave the file status as uploaded.  			row.find('.file-status').toggleClass('file-uploaded'); @@ -281,7 +281,7 @@ phpbb.plupload.deleteFile = function(row, attachId) {  	$.ajax(phpbb.plupload.config.url, {  		type: 'POST',  		data: $.extend(fields, phpbb.plupload.getSerializedData()), -		headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'} +		headers: { 'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest' }  	})  	.always(always)  	.done(done); @@ -297,10 +297,10 @@ phpbb.plupload.hideEmptyList = function() {  };  /** - * Update the indices used in inline attachment bbcodes. This ensures that the bbcodes - * correspond to the correct file after a file is added or removed. This should be called  - * before the phpbb.plupload,data and phpbb.plupload.ids arrays are updated, otherwise it will - * not work correctly. + * Update the indices used in inline attachment bbcodes. This ensures that the + * bbcodes correspond to the correct file after a file is added or removed. + * This should be called before the phpbb.plupload,data and phpbb.plupload.ids + * arrays are updated, otherwise it will not work correctly.   *   * @param {string} action	The action that occurred -- either "addition" or "removal"   * @param {int} index		The index of the attachment from phpbb.plupload.ids that was affected. @@ -323,7 +323,7 @@ phpbb.plupload.updateBbcode = function(action, index) {  				return '';  			}  			var newIndex = i + ((removal) ? -1 : 1); -			return '[attachment=' + newIndex +']' + fileName + '[/attachment]'; +			return '[attachment=' + newIndex + ']' + fileName + '[/attachment]';  		});  	} @@ -380,10 +380,10 @@ phpbb.plupload.handleMaxFilesReached = function() {  		phpbb.plupload.markQueuedFailed(phpbb.plupload.lang.TOO_MANY_ATTACHMENTS);  		// Disable the uploader.  		phpbb.plupload.disableUploader(); -		phpbb.plupload.uploader.trigger('Error', {message: phpbb.plupload.lang.TOO_MANY_ATTACHMENTS}); +		phpbb.plupload.uploader.trigger('Error', { message: phpbb.plupload.lang.TOO_MANY_ATTACHMENTS });  		return true; -	} else if(phpbb.plupload.maxFiles > phpbb.plupload.ids.length) { +	} else if (phpbb.plupload.maxFiles > phpbb.plupload.ids.length) {  		// Enable the uploader if the user is under the limit  		phpbb.plupload.enableUploader();  	} @@ -504,7 +504,7 @@ phpbb.plupload.uploader.bind('BeforeUpload', function(up, file) {  		return;  	} -	phpbb.plupload.updateMultipartParams({'real_filename': file.name}); +	phpbb.plupload.updateMultipartParams({ real_filename: file.name });  });  /** @@ -538,7 +538,7 @@ phpbb.plupload.uploader.bind('ChunkUploaded', function(up, file, response) {  	// If trigger_error() was called, then a permission error likely occurred.  	if (typeof json.title !== 'undefined') { -		json.error = {message: json.message}; +		json.error = { message: json.message };  	}  	if (json.error) { @@ -619,7 +619,7 @@ phpbb.plupload.uploader.bind('FileUploaded', function(up, file, response) {  	// If trigger_error() was called, then a permission error likely occurred.  	if (typeof json.title !== 'undefined') {  		error = json.message; -		up.trigger('Error', {message: error}); +		up.trigger('Error', { message: error });  		// The rest of the queue will fail.  		phpbb.plupload.markQueuedFailed(error); @@ -640,7 +640,7 @@ phpbb.plupload.uploader.bind('FileUploaded', function(up, file, response) {  });  /** - * Fires when the entire queue of files have been uploaded.  + * Fires when the entire queue of files have been uploaded.   */  phpbb.plupload.uploader.bind('UploadComplete', function() {  	// Hide the progress bar diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 0e8446b0b9..5350ebbc6b 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -531,6 +531,14 @@ mcp_front_latest_unapproved_before  * Since: 3.1.3-RC1  * Purpose: Add content before latest unapproved posts list +mcp_post_additional_options +=== +* Locations: +    + styles/prosilver/template/mcp_post.html +    + styles/subsilver2/template/mcp_post.html +* Since: 3.1.5-RC1 +* Purpose: Add content within the list of post moderation actions +  memberlist_body_username_append  ===  * Locations: diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index a41a53226f..4a1c74fd77 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -500,7 +500,7 @@ class acp_board  		}  		// We go through the display_vars to make sure no one is trying to set variables he/she is not allowed to... -		foreach ($display_vars['vars'] as $config_name => $null) +		foreach ($display_vars['vars'] as $config_name => $data)  		{  			if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false)  			{ @@ -532,6 +532,13 @@ class acp_board  			if ($submit)  			{ +				if (strpos($data['type'], 'password') === 0 && $config_value === '********') +				{ +					// Do not update password fields if the content is ********, +					// because that is the password replacement we use to not +					// send the password to the output +					continue; +				}  				set_config($config_name, $config_value);  				if ($config_name == 'allow_quick_reply' && isset($_POST['allow_quick_reply_enable'])) @@ -560,6 +567,7 @@ class acp_board  			$old_auth_config = array();  			foreach ($auth_providers as $provider)  			{ +				/** @var \phpbb\auth\provider\provider_interface $provider */  				if ($fields = $provider->acp())  				{  					// Check if we need to create config fields for this plugin and save config when submit was pressed @@ -575,6 +583,14 @@ class acp_board  							continue;  						} +						if (substr($field, -9) === '_password' && $cfg_array[$field] === '********') +						{ +							// Do not update password fields if the content is ********, +							// because that is the password replacement we use to not +							// send the password to the output +							continue; +						} +  						$old_auth_config[$field] = $this->new_config[$field];  						$config_value = $cfg_array[$field];  						$this->new_config[$field] = $config_value; diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index 8d2e9d41a3..284543acd3 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -107,7 +107,10 @@ class acp_jabber  			set_config('jab_host', $jab_host);  			set_config('jab_port', $jab_port);  			set_config('jab_username', $jab_username); -			set_config('jab_password', $jab_password); +			if ($jab_password !== '********') +			{ +				set_config('jab_password', $jab_password); +			}  			set_config('jab_package_size', $jab_package_size);  			set_config('jab_use_ssl', $jab_use_ssl); @@ -122,7 +125,7 @@ class acp_jabber  			'JAB_HOST'				=> $jab_host,  			'JAB_PORT'				=> ($jab_port) ? $jab_port : '',  			'JAB_USERNAME'			=> $jab_username, -			'JAB_PASSWORD'			=> $jab_password, +			'JAB_PASSWORD'			=> $jab_password !== '' ? '********' : '',  			'JAB_PACKAGE_SIZE'		=> $jab_package_size,  			'JAB_USE_SSL'			=> $jab_use_ssl,  			'S_CAN_USE_SSL'			=> jabber::can_use_ssl(), diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index 6eb213fd7a..c68f26fc13 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -507,7 +507,7 @@ class acp_prune  					AND ug.user_id <> ' . ANONYMOUS . '  					AND u.user_type <> ' . USER_FOUNDER . '  					AND ug.user_pending = 0 ' . -					((!empty($user_ids)) ? ' AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '') . ' +					(!empty($user_ids) ? ' AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '') . '  					AND u.user_id = ug.user_id';  			$result = $db->sql_query($sql); @@ -533,7 +533,7 @@ class acp_prune  				FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u  				WHERE u.user_id <> ' . ANONYMOUS . '  					AND u.user_type <> ' . USER_FOUNDER . -					((!empty($user_ids)) ? ' AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . ' +					(!empty($user_ids) ? ' AND ' . $db->sql_in_set('p.poster_id', $user_ids) : '') . '  					AND ' . $db->sql_in_set('p.post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) . '  					AND u.user_id = p.poster_id  				GROUP BY p.poster_id diff --git a/phpBB/includes/functions_acp.php b/phpBB/includes/functions_acp.php index a53a54368e..d566336d26 100644 --- a/phpBB/includes/functions_acp.php +++ b/phpBB/includes/functions_acp.php @@ -245,8 +245,13 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)  	switch ($tpl_type[0])  	{ -		case 'text':  		case 'password': +			if ($new[$config_key] !== '') +			{ +				// replace passwords with asterixes +				$new[$config_key] = '********'; +			} +		case 'text':  		case 'url':  		case 'email':  		case 'color': diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index f0ad67a150..afd3dce730 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -500,7 +500,7 @@ function filelist($rootdir, $dir = '', $type = 'gif|jpg|jpeg|png')  */  function move_topics($topic_ids, $forum_id, $auto_sync = true)  { -	global $db; +	global $db, $phpbb_dispatcher;  	if (empty($topic_ids))  	{ @@ -534,6 +534,27 @@ function move_topics($topic_ids, $forum_id, $auto_sync = true)  	}  	$table_ary = array(TOPICS_TABLE, POSTS_TABLE, LOG_TABLE, DRAFTS_TABLE, TOPICS_TRACK_TABLE); + +	/** +	 * Perform additional actions before topics move +	 * +	 * @event core.move_topics_before_query +	 * @var	array	table_ary	Array of tables from which forum_id will be updated for all rows that hold the moved topics +	 * @var	array	topic_ids	Array of the moved topic ids +	 * @var	string	forum_id	The forum id from where the topics are moved +	 * @var	array	forum_ids	Array of the forums where the topics are moving (includes also forum_id) +	 * @var bool	auto_sync	Whether or not to perform auto sync +	 * @since 3.1.5-RC1 +	 */ +	$vars = array( +			'table_ary', +			'topic_ids', +			'forum_id', +			'forum_ids', +			'auto_sync', +	); +	extract($phpbb_dispatcher->trigger_event('core.move_topics_before_query', compact($vars))); +  	foreach ($table_ary as $table)  	{  		$sql = "UPDATE $table diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 5888a6160d..8aee80ba34 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -150,7 +150,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  	$sql = $db->sql_build_query('SELECT', $sql_ary);  	$result = $db->sql_query($sql); -	$forum_tracking_info = array(); +	$forum_tracking_info = $valid_categories = array();  	$branch_root_id = $root_data['forum_id'];  	$phpbb_content_visibility = $phpbb_container->get('content.visibility'); @@ -250,6 +250,12 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  			}  		} +		// Fill list of categories with forums +		if (isset($forum_rows[$row['parent_id']])) +		{ +			$valid_categories[$row['parent_id']] = true; +		} +  		//  		if ($row['parent_id'] == $root_data['forum_id'] || $row['parent_id'] == $branch_root_id)  		{ @@ -267,6 +273,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  				$branch_root_id = $forum_id;  			}  			$forum_rows[$parent_id]['forum_id_last_post'] = $row['forum_id']; +			$forum_rows[$parent_id]['forum_password_last_post'] = $row['forum_password'];  			$forum_rows[$parent_id]['orig_forum_last_post_time'] = $row['forum_last_post_time'];  		}  		else if ($row['forum_type'] != FORUM_CAT) @@ -308,6 +315,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  				$forum_rows[$parent_id]['forum_last_poster_name'] = $row['forum_last_poster_name'];  				$forum_rows[$parent_id]['forum_last_poster_colour'] = $row['forum_last_poster_colour'];  				$forum_rows[$parent_id]['forum_id_last_post'] = $forum_id; +				$forum_rows[$parent_id]['forum_password_last_post'] = $row['forum_password'];  			}  		} @@ -404,6 +412,12 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  		// Category  		if ($row['parent_id'] == $root_data['forum_id'] && $row['forum_type'] == FORUM_CAT)  		{ +			// Do not display categories without any forums to display +			if (!isset($valid_categories[$row['forum_id']])) +			{ +				continue; +			} +  			$cat_row = array(  				'S_IS_CAT'				=> true,  				'FORUM_ID'				=> $row['forum_id'], @@ -522,8 +536,15 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  		// Create last post link information, if appropriate  		if ($row['forum_last_post_id'])  		{ -			$last_post_subject = $row['forum_last_post_subject']; -			$last_post_subject_truncated = truncate_string(censor_text($last_post_subject), 30, 255, false, $user->lang['ELLIPSIS']); +			if ($row['forum_password_last_post'] === '' && $auth->acl_get('f_read', $row['forum_id_last_post'])) +			{ +				$last_post_subject = censor_text($row['forum_last_post_subject']); +				$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']); +			} +			else +			{ +				$last_post_subject = $last_post_subject_truncated = ''; +			}  			$last_post_time = $user->format_date($row['forum_last_post_time']);  			$last_post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id_last_post'] . '&p=' . $row['forum_last_post_id']) . '#p' . $row['forum_last_post_id'];  		} @@ -583,7 +604,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  			'S_LOCKED_FORUM'	=> ($row['forum_status'] == ITEM_LOCKED) ? true : false,  			'S_LIST_SUBFORUMS'	=> ($row['display_subforum_list']) ? true : false,  			'S_SUBFORUMS'		=> (sizeof($subforums_list)) ? true : false, -			'S_DISPLAY_SUBJECT'	=>	($last_post_subject && $config['display_last_subject'] && !$row['forum_password'] && $auth->acl_get('f_read', $row['forum_id'])) ? true : false, +			'S_DISPLAY_SUBJECT'	=>	($last_post_subject !== '' && $config['display_last_subject']) ? true : false,  			'S_FEED_ENABLED'	=> ($config['feed_forum'] && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $row['forum_options']) && $row['forum_type'] == FORUM_POST) ? true : false,  			'FORUM_ID'				=> $row['forum_id'], @@ -596,8 +617,8 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  			'FORUM_FOLDER_IMG_ALT'	=> isset($user->lang[$folder_alt]) ? $user->lang[$folder_alt] : '',  			'FORUM_IMAGE'			=> ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang[$folder_alt] . '" />' : '',  			'FORUM_IMAGE_SRC'		=> ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '', -			'LAST_POST_SUBJECT'		=> (!$row['forum_password'] && $auth->acl_get('f_read', $row['forum_id'])) ? censor_text($last_post_subject) : "", -			'LAST_POST_SUBJECT_TRUNCATED'	=> (!$row['forum_password'] && $auth->acl_get('f_read', $row['forum_id'])) ? $last_post_subject_truncated : "", +			'LAST_POST_SUBJECT'		=> $last_post_subject, +			'LAST_POST_SUBJECT_TRUNCATED'	=> $last_post_subject_truncated,  			'LAST_POST_TIME'		=> $last_post_time,  			'LAST_POSTER'			=> get_username_string('username', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),  			'LAST_POSTER_COLOUR'	=> get_username_string('colour', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']), diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 9cd662027e..815f07d2e4 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -500,6 +500,9 @@ function user_delete($mode, $user_ids, $retain_username = true)  	$num_users_delta = 0; +	// Get auth provider collection in case accounts might need to be unlinked +	$provider_collection = $phpbb_container->get('auth.provider_collection'); +  	// Some things need to be done in the loop (if the query changes based  	// on which user is currently being deleted)  	$added_guest_posts = 0; @@ -510,6 +513,38 @@ function user_delete($mode, $user_ids, $retain_username = true)  			avatar_delete('user', $user_row);  		} +		// Unlink accounts +		foreach ($provider_collection as $provider_name => $auth_provider) +		{ +			$provider_data = $auth_provider->get_auth_link_data($user_id); + +			if ($provider_data !== null) +			{ +				$link_data = array( +					'user_id' => $user_id, +					'link_method' => 'user_delete', +				); + +				// BLOCK_VARS might contain hidden fields necessary for unlinking accounts +				if (isset($provider_data['BLOCK_VARS']) && is_array($provider_data['BLOCK_VARS'])) +				{ +					foreach ($provider_data['BLOCK_VARS'] as $provider_service) +					{ +						if (!array_key_exists('HIDDEN_FIELDS', $provider_service)) +						{ +							$provider_service['HIDDEN_FIELDS'] = array(); +						} + +						$auth_provider->unlink_account(array_merge($link_data, $provider_service['HIDDEN_FIELDS'])); +					} +				} +				else +				{ +					$auth_provider->unlink_account($link_data); +				} +			} +		} +  		// Decrement number of users if this user is active  		if ($user_row['user_type'] != USER_INACTIVE && $user_row['user_type'] != USER_IGNORE)  		{ diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index fec872984c..f0fc0a3f06 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -26,6 +26,7 @@ function mcp_post_details($id, $mode, $action)  {  	global $phpEx, $phpbb_root_path, $config;  	global $template, $db, $user, $auth, $cache; +	global $phpbb_dispatcher;  	$user->add_lang('posting'); @@ -106,6 +107,21 @@ function mcp_post_details($id, $mode, $action)  			}  		break; + +		default: + +			/** +			* This event allows you to handle custom post moderation options +			* +			* @event core.mcp_post_additional_options +			* @var	string	action		Post moderation action name +			* @var	array	post_info	Information on the affected post +			* @since 3.1.5-RC1 +			*/ +			$vars = array('action', 'post_info'); +			extract($phpbb_dispatcher->trigger_event('core.mcp_post_additional_options', compact($vars))); + +		break;  	}  	// Set some vars @@ -197,7 +213,7 @@ function mcp_post_details($id, $mode, $action)  		$l_deleted_by = '';  	} -	$template->assign_vars(array( +	$mcp_post_template_data = array(  		'U_MCP_ACTION'			=> "$url&i=main&quickmod=1&mode=post_details", // Use this for mode paramaters  		'U_POST_ACTION'			=> "$url&i=$id&mode=post_details", // Use this for action parameters  		'U_APPROVE_ACTION'		=> append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f={$post_info['forum_id']}"), @@ -249,7 +265,32 @@ function mcp_post_details($id, $mode, $action)  		'U_LOOKUP_IP'			=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? "$url&i=$id&mode=$mode&lookup={$post_info['poster_ip']}#ip" : '',  		'U_WHOIS'				=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$post_info['poster_ip']}") : '', -	)); +	); + +	$s_additional_opts = false; + +	/** +	* Event to add/modify MCP post template data +	* +	* @event core.mcp_post_template_data +	* @var	array	post_info					Array with the post information +	* @var	array	mcp_post_template_data		Array with the MCP post template data +	* @var	array	attachments					Array with the post attachments, if any +	* @var	bool	s_additional_opts			Must be set to true in extension if additional options are presented in MCP post panel +	* @since 3.1.5-RC1 +	*/ +	$vars = array( +		'post_info', +		'mcp_post_template_data', +		'attachments', +		's_additional_opts', +	); +	extract($phpbb_dispatcher->trigger_event('core.mcp_post_template_data', compact($vars))); + +	$template->assign_vars($mcp_post_template_data); +	$template->assign_var('S_MCP_POST_ADDITIONAL_OPTS', $s_additional_opts); + +	unset($mcp_post_template_data);  	// Get User Notes  	$log_data = array(); diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 51018e3a5d..8b7d42e9c9 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -55,7 +55,6 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	$address_list	= $request->variable('address_list', array('' => array(0 => ''))); -	$submit		= (isset($_POST['post'])) ? true : false;  	$preview	= (isset($_POST['preview'])) ? true : false;  	$save		= (isset($_POST['save'])) ? true : false;  	$load		= (isset($_POST['load'])) ? true : false; @@ -69,6 +68,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	$refresh	= isset($_POST['add_file']) || isset($_POST['delete_file']) || $save || $load  		|| $remove_u || $remove_g || $add_to || $add_bcc; +	$submit = $request->is_set_post('post') && !$refresh && !$preview;  	$action		= ($delete && !$preview && !$refresh && $submit) ? 'delete' : $action;  	$select_single = ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? false : true; diff --git a/phpBB/phpbb/auth/provider/base.php b/phpBB/phpbb/auth/provider/base.php index 4c49070eaf..dea27ccc25 100644 --- a/phpBB/phpbb/auth/provider/base.php +++ b/phpBB/phpbb/auth/provider/base.php @@ -61,7 +61,7 @@ abstract class base implements \phpbb\auth\provider\provider_interface  	/**  	* {@inheritdoc}  	*/ -	public function get_auth_link_data() +	public function get_auth_link_data($user_id = 0)  	{  		return;  	} diff --git a/phpBB/phpbb/auth/provider/ldap.php b/phpBB/phpbb/auth/provider/ldap.php index c71950c698..c48b771ab0 100644 --- a/phpBB/phpbb/auth/provider/ldap.php +++ b/phpBB/phpbb/auth/provider/ldap.php @@ -289,7 +289,6 @@ class ldap extends \phpbb\auth\provider\base  	/**  	 * {@inheritdoc}  	 */ -  	public function acp()  	{  		// These are fields required in the config table @@ -308,7 +307,7 @@ class ldap extends \phpbb\auth\provider\base  			'TEMPLATE_VARS'	=> array(  				'AUTH_LDAP_BASE_DN'		=> $new_config['ldap_base_dn'],  				'AUTH_LDAP_EMAIL'		=> $new_config['ldap_email'], -				'AUTH_LDAP_PASSORD'		=> $new_config['ldap_password'], +				'AUTH_LDAP_PASSORD'		=> $new_config['ldap_password'] !== '' ? '********' : '',  				'AUTH_LDAP_PORT'		=> $new_config['ldap_port'],  				'AUTH_LDAP_SERVER'		=> $new_config['ldap_server'],  				'AUTH_LDAP_UID'			=> $new_config['ldap_uid'], diff --git a/phpBB/phpbb/auth/provider/oauth/oauth.php b/phpBB/phpbb/auth/provider/oauth/oauth.php index c0ce3f1fba..be0fbf5831 100644 --- a/phpBB/phpbb/auth/provider/oauth/oauth.php +++ b/phpBB/phpbb/auth/provider/oauth/oauth.php @@ -553,13 +553,13 @@ class oauth extends \phpbb\auth\provider\base  	/**  	* {@inheritdoc}  	*/ -	public function get_auth_link_data() +	public function get_auth_link_data($user_id = 0)  	{  		$block_vars = array();  		// Get all external accounts tied to the current user  		$data = array( -			'user_id' => (int) $this->user->data['user_id'], +			'user_id' => ($user_id <= 0) ? (int) $this->user->data['user_id'] : (int) $user_id,  		);  		$sql = 'SELECT oauth_provider_id, provider FROM ' . $this->auth_provider_oauth_token_account_assoc . '  			WHERE ' . $this->db->sql_build_array('SELECT', $data); @@ -616,10 +616,13 @@ class oauth extends \phpbb\auth\provider\base  			return 'LOGIN_LINK_MISSING_DATA';  		} +		// Remove user specified in $link_data if possible +		$user_id = isset($link_data['user_id']) ? $link_data['user_id'] : $this->user->data['user_id']; +  		// Remove the link  		$sql = 'DELETE FROM ' . $this->auth_provider_oauth_token_account_assoc . "  			WHERE provider = '" . $this->db->sql_escape($link_data['oauth_service']) . "' -				AND user_id = " . (int) $this->user->data['user_id']; +				AND user_id = " . (int) $user_id;  		$this->db->sql_query($sql);  		// Clear all tokens belonging to the user on this servce diff --git a/phpBB/phpbb/auth/provider/provider_interface.php b/phpBB/phpbb/auth/provider/provider_interface.php index 613297cefc..35e0f559a1 100644 --- a/phpBB/phpbb/auth/provider/provider_interface.php +++ b/phpBB/phpbb/auth/provider/provider_interface.php @@ -166,6 +166,10 @@ interface provider_interface  	/**  	* Returns an array of data necessary to build the ucp_auth_link page  	* +	* @param int $user_id User ID for whom the data should be retrieved. +	*						defaults to 0, which is not a valid ID. The method +	*						should fall back to the current user's ID in this +	*						case.  	* @return	array|null	If this function is not implemented on an auth  	*						provider then it returns null. If it is implemented  	*						it will return an array of up to four elements of @@ -181,7 +185,7 @@ interface provider_interface  	*							'VARS'				=> array(...),  	*						)  	*/ -	public function get_auth_link_data(); +	public function get_auth_link_data($user_id = 0);  	/**  	* Unlinks an external account from a phpBB account. diff --git a/phpBB/phpbb/passwords/driver/helper.php b/phpBB/phpbb/passwords/driver/helper.php index caa65080ac..f80c3e3df6 100644 --- a/phpBB/phpbb/passwords/driver/helper.php +++ b/phpBB/phpbb/passwords/driver/helper.php @@ -153,11 +153,23 @@ class helper  	 */  	public function string_compare($string_a, $string_b)  	{ -		$difference = strlen($string_a) != strlen($string_b); +		// Return if input variables are not strings or if length does not match +		if (!is_string($string_a) || !is_string($string_b) || strlen($string_a) != strlen($string_b)) +		{ +			return false; +		} + +		// Use hash_equals() if it's available +		if (function_exists('hash_equals')) +		{ +			return hash_equals($string_a, $string_b); +		} + +		$difference = 0;  		for ($i = 0; $i < strlen($string_a) && $i < strlen($string_b); $i++)  		{ -			$difference |= $string_a[$i] != $string_b[$i]; +			$difference |= ord($string_a[$i]) ^ ord($string_b[$i]);  		}  		return $difference === 0; diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php index 8228f8ea28..09c37c61e4 100644 --- a/phpBB/phpbb/search/fulltext_native.php +++ b/phpBB/phpbb/search/fulltext_native.php @@ -1083,7 +1083,7 @@ class fulltext_native extends \phpbb\search\base  			// Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it.  			$sql_calc = str_replace('SELECT ' . $select, 'SELECT DISTINCT SQL_CALC_FOUND_ROWS p.post_id', $sql); -			$this->db->sql_query($sql_calc); +			$result = $this->db->sql_query($sql_calc);  			$this->db->sql_freeresult($result);  			$sql_count = 'SELECT FOUND_ROWS() as total_results'; diff --git a/phpBB/posting.php b/phpBB/posting.php index f0446cf2db..7e3611c368 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -35,7 +35,6 @@ $forum_id	= request_var('f', 0);  $draft_id	= request_var('d', 0);  $lastclick	= request_var('lastclick', 0); -$submit		= (isset($_POST['post'])) ? true : false;  $preview	= (isset($_POST['preview'])) ? true : false;  $save		= (isset($_POST['save'])) ? true : false;  $load		= (isset($_POST['load'])) ? true : false; @@ -43,6 +42,7 @@ $confirm	= $request->is_set_post('confirm');  $cancel		= (isset($_POST['cancel']) && !isset($_POST['save'])) ? true : false;  $refresh	= (isset($_POST['add_file']) || isset($_POST['delete_file']) || isset($_POST['cancel_unglobalise']) || $save || $load || $preview); +$submit = $request->is_set_post('post') && !$refresh && !$preview;  $mode		= request_var('mode', '');  // If the user is not allowed to delete the post, we try to soft delete it, so we overwrite the mode here. @@ -1241,6 +1241,7 @@ if ($submit || $preview || $refresh)  	*  	* @event core.posting_modify_submission_errors  	* @var	array	post_data	Array with post data +	* @var	array	poll		Array with poll data from post (must be used instead of the post_data equivalent)  	* @var	string	mode		What action to take if the form is submitted  	*				post|reply|quote|edit|delete|bump|smilies|popup  	* @var	string	page_title	Title of the mode page @@ -1251,9 +1252,11 @@ if ($submit || $preview || $refresh)  	* @var	array	error		Any error strings; a non-empty array aborts form submission.  	*				NOTE: Should be actual language strings, NOT language keys.  	* @since 3.1.0-RC5 +	* @change 3.1.5-RC1 Added poll array to the event  	*/  	$vars = array(  		'post_data', +		'poll',  		'mode',  		'page_title',  		'post_id', @@ -1791,6 +1794,30 @@ $page_data = array(  	'S_IN_POSTING'			=> true,  ); +// Build custom bbcodes array +display_custom_bbcodes(); + +// Poll entry +if (($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']/* && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id))*/)) +	&& $auth->acl_get('f_poll', $forum_id)) +{ +	$page_data = array_merge($page_data, array( +		'S_SHOW_POLL_BOX'		=> true, +		'S_POLL_VOTE_CHANGE'	=> ($auth->acl_get('f_votechg', $forum_id) && $auth->acl_get('f_vote', $forum_id)), +		'S_POLL_DELETE'			=> ($mode == 'edit' && sizeof($post_data['poll_options']) && ((!$post_data['poll_last_vote'] && $post_data['poster_id'] == $user->data['user_id'] && $auth->acl_get('f_delete', $forum_id)) || $auth->acl_get('m_delete', $forum_id))), +		'S_POLL_DELETE_CHECKED'	=> (!empty($poll_delete)) ? true : false, + +		'L_POLL_OPTIONS_EXPLAIN'	=> $user->lang('POLL_OPTIONS_' . (($mode == 'edit') ? 'EDIT_' : '') . 'EXPLAIN', (int) $config['max_poll_options']), + +		'VOTE_CHANGE_CHECKED'	=> (!empty($post_data['poll_vote_change'])) ? ' checked="checked"' : '', +		'POLL_TITLE'			=> (isset($post_data['poll_title'])) ? $post_data['poll_title'] : '', +		'POLL_OPTIONS'			=> (!empty($post_data['poll_options'])) ? implode("\n", $post_data['poll_options']) : '', +		'POLL_MAX_OPTIONS'		=> (isset($post_data['poll_max_options'])) ? (int) $post_data['poll_max_options'] : 1, +		'POLL_LENGTH'			=> $post_data['poll_length'], +		) +	); +} +  /**  * This event allows you to modify template variables for the posting screen  * @@ -1829,6 +1856,7 @@ $page_data = array(  *		post_id, topic_id, forum_id, submit, preview, save, load,  *		delete, cancel, refresh, error, page_data, message_parser  * @change 3.1.2-RC1 Removed 'delete' var as it does not exist +* @change 3.1.5-RC1 Added poll variables to the page_data array  */  $vars = array(  	'post_data', @@ -1857,29 +1885,6 @@ extract($phpbb_dispatcher->trigger_event('core.posting_modify_template_vars', co  // Start assigning vars for main posting page ...  $template->assign_vars($page_data); -// Build custom bbcodes array -display_custom_bbcodes(); - -// Poll entry -if (($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']/* && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id))*/)) -	&& $auth->acl_get('f_poll', $forum_id)) -{ -	$template->assign_vars(array( -		'S_SHOW_POLL_BOX'		=> true, -		'S_POLL_VOTE_CHANGE'	=> ($auth->acl_get('f_votechg', $forum_id) && $auth->acl_get('f_vote', $forum_id)), -		'S_POLL_DELETE'			=> ($mode == 'edit' && sizeof($post_data['poll_options']) && ((!$post_data['poll_last_vote'] && $post_data['poster_id'] == $user->data['user_id'] && $auth->acl_get('f_delete', $forum_id)) || $auth->acl_get('m_delete', $forum_id))), -		'S_POLL_DELETE_CHECKED'	=> (!empty($poll_delete)) ? true : false, - -		'L_POLL_OPTIONS_EXPLAIN'	=> $user->lang('POLL_OPTIONS_' . (($mode == 'edit') ? 'EDIT_' : '') . 'EXPLAIN', (int) $config['max_poll_options']), - -		'VOTE_CHANGE_CHECKED'	=> (!empty($post_data['poll_vote_change'])) ? ' checked="checked"' : '', -		'POLL_TITLE'			=> (isset($post_data['poll_title'])) ? $post_data['poll_title'] : '', -		'POLL_OPTIONS'			=> (!empty($post_data['poll_options'])) ? implode("\n", $post_data['poll_options']) : '', -		'POLL_MAX_OPTIONS'		=> (isset($post_data['poll_max_options'])) ? (int) $post_data['poll_max_options'] : 1, -		'POLL_LENGTH'			=> $post_data['poll_length']) -	); -} -  // Show attachment box for adding attachments if true  $allowed = ($auth->acl_get('f_attach', $forum_id) && $auth->acl_get('u_attach') && $config['allow_attachments'] && $form_enctype); diff --git a/phpBB/styles/prosilver/template/ajax.js b/phpBB/styles/prosilver/template/ajax.js index 1d95fa42fa..76c605dd19 100644 --- a/phpBB/styles/prosilver/template/ajax.js +++ b/phpBB/styles/prosilver/template/ajax.js @@ -9,9 +9,9 @@ phpbb.addAjaxCallback('mark_forums_read', function(res) {  	var readTitle = res.NO_UNREAD_POSTS;  	var unreadTitle = res.UNREAD_POSTS;  	var iconsArray = { -		'forum_unread': 'forum_read', -		'forum_unread_subforum': 'forum_read_subforum', -		'forum_unread_locked': 'forum_read_locked' +		forum_unread: 'forum_read', +		forum_unread_subforum: 'forum_read_subforum', +		forum_unread_locked: 'forum_read_locked'  	};  	$('li.row').find('dl[class*="forum_unread"]').each(function() { @@ -39,7 +39,7 @@ phpbb.addAjaxCallback('mark_forums_read', function(res) {  	phpbb.closeDarkenWrapper(3000);  }); -/**  +/**  * This callback will mark all topic icons read  *  * @param {bool} [update_topic_links=true] Whether "Mark topics read" links @@ -49,10 +49,10 @@ phpbb.addAjaxCallback('mark_topics_read', function(res, updateTopicLinks) {  	var readTitle = res.NO_UNREAD_POSTS;  	var unreadTitle = res.UNREAD_POSTS;  	var iconsArray = { -		'global_unread': 'global_read', -		'announce_unread': 'announce_read', -		'sticky_unread': 'sticky_read', -		'topic_unread': 'topic_read' +		global_unread: 'global_read', +		announce_unread: 'announce_read', +		sticky_unread: 'sticky_read', +		topic_unread: 'topic_read'  	};  	var iconsState = ['', '_hot', '_hot_mine', '_locked', '_locked_mine', '_mine'];  	var unreadClassSelectors; @@ -223,7 +223,7 @@ phpbb.addAjaxCallback('vote_poll', function(res) {  			// If the user can still vote, simply slide down the results  			poll.find('.resultbar, .poll_option_percent, .poll_total_votes').show(500);  		} -		 +  		// Get the votes count of the highest poll option  		poll.find('[data-poll-option-id]').each(function() {  			var option = $(this); @@ -252,7 +252,7 @@ phpbb.addAjaxCallback('vote_poll', function(res) {  			var newBarClass = (percent === 100) ? 'pollbar5' : 'pollbar' + (Math.floor(percent / 20) + 1);  			setTimeout(function () { -				bar.animate({width: percentRel + '%'}, 500) +				bar.animate({ width: percentRel + '%' }, 500)  					.removeClass('pollbar1 pollbar2 pollbar3 pollbar4 pollbar5')  					.addClass(newBarClass)  					.html(res.vote_counts[optionId]); @@ -287,10 +287,10 @@ phpbb.addAjaxCallback('vote_poll', function(res) {  			var panelHeight = panel.height();  			var innerHeight = panel.find('.inner').outerHeight(); -			if (panelHeight != innerHeight) { -				panel.css({'min-height': '', 'height': panelHeight}) -					.animate({height: innerHeight}, time, function () { -						panel.css({'min-height': innerHeight, 'height': ''}); +			if (panelHeight !== innerHeight) { +				panel.css({ minHeight: '', height: panelHeight }) +					.animate({ height: innerHeight }, time, function () { +						panel.css({ minHeight: innerHeight, height: '' });  					});  			}  		}; @@ -377,7 +377,8 @@ $('#member_search').click(function () {  * Automatically resize textarea  */  $(function() { -	phpbb.resizeTextArea($('textarea:not(#message-box textarea, .no-auto-resize)'), {minHeight: 75, maxHeight: 250}); +	var $textarea = $('textarea:not(#message-box textarea, .no-auto-resize)'); +	phpbb.resizeTextArea($textarea, { minHeight: 75, maxHeight: 250 });  	phpbb.resizeTextArea($('textarea', '#message-box'));  }); diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index 7a377a4973..ccedf19604 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -1,3 +1,5 @@ +/* global phpbb */ +  /**  * phpBB3 forum functions  */ @@ -37,7 +39,7 @@ function pageJump(item) {  		baseUrl = item.attr('data-base-url'),  		startName = item.attr('data-start-name'); -	if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0) { +	if (page !== null && !isNaN(page) && page === Math.floor(page) && page > 0) {  		if (baseUrl.indexOf('?') === -1) {  			document.location.href = baseUrl + '?' + startName + '=' + ((page - 1) * perPage);  		} else { @@ -124,7 +126,7 @@ function activateSubPanel(p, panels) {  	var i, showPanel; -	if (typeof(p) === 'string') { +	if (typeof p === 'string') {  		showPanel = p;  	}  	$('input[name="show_panel"]').val(showPanel); @@ -277,8 +279,7 @@ jQuery(function($) {  /**  * Functions for user search popup  */ -function insertUser(formId, value) -{ +function insertUser(formId, value) {  	'use strict';  	var $form = jQuery(formId), @@ -286,7 +287,7 @@ function insertUser(formId, value)  		fieldName = $form.attr('data-field-name'),  		item = opener.document.forms[formName][fieldName]; -	if (item.value.length && item.type == 'textarea') { +	if (item.value.length && item.type === 'textarea') {  		value = item.value + '\n' + value;  	} @@ -319,7 +320,7 @@ function parseDocument($container) {  	'use strict';  	var test = document.createElement('div'), -		oldBrowser = (typeof test.style.borderRadius == 'undefined'), +		oldBrowser = (typeof test.style.borderRadius === 'undefined'),  		$body = $('body');  	/** @@ -359,7 +360,10 @@ function parseDocument($container) {  	*/  	if (oldBrowser) {  		// Fix .linklist.bulletin lists -		$container.find('ul.linklist.bulletin > li:first-child, ul.linklist.bulletin > li.rightside:last-child').addClass('no-bulletin'); +		$container +			.find('ul.linklist.bulletin > li') +			.filter(':first-child, .rightside:last-child') +			.addClass('no-bulletin');  	}  	/** @@ -420,12 +424,12 @@ function parseDocument($container) {  				width;  			// Test max-width set in code for .navlinks above -			width = parseInt($this.css('max-width')); +			width = parseInt($this.css('max-width'), 10);  			if (!width) { - 				width = $body.width(); +				width = $body.width();  			} -			maxHeight = parseInt($this.css('line-height')); +			maxHeight = parseInt($this.css('line-height'), 10);  			$links.each(function() {  				if ($(this).height() > 0) {  					maxHeight = Math.max(maxHeight, $(this).outerHeight(true)); @@ -452,8 +456,8 @@ function parseDocument($container) {  				return;  			} -			for (var i = 0; i < classesLength; i ++) { -				for (var j = length - 1; j >= 0; j --) { +			for (var i = 0; i < classesLength; i++) { +				for (var j = length - 1; j >= 0; j--) {  					$links.eq(j).addClass('wrapped ' + classes[i]);  					if ($this.height() <= maxHeight) {  						return; @@ -470,7 +474,9 @@ function parseDocument($container) {  	/**  	* Responsive link lists  	*/ -	$container.find('.linklist:not(.navlinks, [data-skip-responsive]), .postbody .post-buttons:not([data-skip-responsive])').each(function() { +	var selector = '.linklist:not(.navlinks, [data-skip-responsive]),' + +		'.postbody .post-buttons:not([data-skip-responsive])'; +	$container.find(selector).each(function() {  		var $this = $(this),  			filterSkip = '.breadcrumbs, [data-skip-responsive]',  			filterLast = '.edit-icon, .quote-icon, [data-last-responsive]', @@ -478,7 +484,7 @@ function parseDocument($container) {  			$linksNotSkip = $linksAll.not(filterSkip), // All items that can potentially be hidden  			$linksFirst = $linksNotSkip.not(filterLast), // The items that will be hidden first  			$linksLast = $linksNotSkip.filter(filterLast), // The items that will be hidden last -			persistent = $this.attr('id') == 'nav-main', // Does this list already have a menu (such as quick-links)? +			persistent = $this.attr('id') === 'nav-main', // Does this list already have a menu (such as quick-links)?  			html = '<li class="responsive-menu hidden"><a href="javascript:void(0);" class="responsive-menu-link"> </a><div class="dropdown hidden"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>',  			slack = 3; // Vertical slack space (in pixels). Determines how sensitive the script is in determining whether a line-break has occured. @@ -675,7 +681,7 @@ function parseDocument($container) {  				$children = column.children(),  				html = column.html(); -			if ($children.length == 1 && $children.text() == column.text()) { +			if ($children.length === 1 && $children.text() === column.text()) {  				html = $children.html();  			} @@ -717,8 +723,7 @@ function parseDocument($container) {  			if (!$block.length) {  				$this.find('dt > .list-inner').append('<div class="responsive-show" style="display:none;" />');  				$block = $this.find('dt .responsive-show:last-child'); -			} -			else { +			} else {  				first = ($.trim($block.text()).length === 0);  			} @@ -728,7 +733,7 @@ function parseDocument($container) {  					children = column.children(),  					html = column.html(); -				if (children.length == 1 && children.text() == column.text()) { +				if (children.length === 1 && children.text() === column.text()) {  					html = children.html();  				} @@ -757,7 +762,7 @@ function parseDocument($container) {  		// Find each header  		$th.each(function(column) {  			var cell = $(this), -				colspan = parseInt(cell.attr('colspan')), +				colspan = parseInt(cell.attr('colspan'), 10),  				dfn = cell.attr('data-dfn'),  				text = dfn ? dfn : cell.text(); @@ -788,14 +793,14 @@ function parseDocument($container) {  				cells = row.children('td'),  				column = 0; -			if (cells.length == 1) { +			if (cells.length === 1) {  				row.addClass('big-column');  				return;  			}  			cells.each(function() {  				var cell = $(this), -					colspan = parseInt(cell.attr('colspan')), +					colspan = parseInt(cell.attr('colspan'), 10),  					text = $.trim(cell.text());  				if (headersLength <= column) { @@ -871,19 +876,26 @@ function parseDocument($container) {  				total = $availableTabs.length,  				i, $tab; -			for (i = total - 1; i >= 0; i --) { +			for (i = total - 1; i >= 0; i--) {  				$tab = $availableTabs.eq(i);  				$menu.prepend($tab.clone(true).removeClass('tab'));  				$tab.hide();  				if ($this.height() <= maxHeight) { -					$menu.find('a').click(function() { check(true); }); +					$menu.find('a').click(function() { +						check(true); +					});  					return;  				}  			} -			$menu.find('a').click(function() { check(true); }); +			$menu.find('a').click(function() { +				check(true); +			});  		} -		phpbb.registerDropdown($item.find('a.responsive-tab-link'), $item.find('.dropdown'), {visibleClass: 'activetab'}); +		var $tabLink = $item.find('a.responsive-tab-link'); +		phpbb.registerDropdown($tabLink, $item.find('.dropdown'), { +			visibleClass: 'activetab' +		});  		check(true);  		$(window).resize(check); diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index 5ac2d2aca3..ec5bf35476 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -20,7 +20,7 @@  	<h3><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a><!-- IF S_REGISTER_ENABLED -->  •  <a href="{U_REGISTER}">{L_REGISTER}</a><!-- ENDIF --></h3>  		<fieldset class="quick-login">  			<label for="username"><span>{L_USERNAME}{L_COLON}</span> <input type="text" tabindex="1" name="username" id="username" size="10" class="inputbox" title="{L_USERNAME}" /></label> -			<label for="password"><span>{L_PASSWORD}{L_COLON}</span> <input type="password" tabindex="2" name="password" id="password" size="10" class="inputbox" title="{L_PASSWORD}" /></label> +			<label for="password"><span>{L_PASSWORD}{L_COLON}</span> <input type="password" tabindex="2" name="password" id="password" size="10" class="inputbox" title="{L_PASSWORD}" autocomplete="off" /></label>  			<!-- IF U_SEND_PASSWORD -->  				<a href="{U_SEND_PASSWORD}">{L_FORGOT_PASS}</a>  			<!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/login_body.html b/phpBB/styles/prosilver/template/login_body.html index c852ffd5f2..ef08035717 100644 --- a/phpBB/styles/prosilver/template/login_body.html +++ b/phpBB/styles/prosilver/template/login_body.html @@ -15,7 +15,7 @@  		</dl>  		<dl>  			<dt><label for="{PASSWORD_CREDENTIAL}">{L_PASSWORD}{L_COLON}</label></dt> -			<dd><input type="password" tabindex="2" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" /></dd> +			<dd><input type="password" tabindex="2" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" autocomplete="off" /></dd>  			<!-- IF S_DISPLAY_FULL_LOGIN and (U_SEND_PASSWORD or U_RESEND_ACTIVATION) -->  				<!-- IF U_SEND_PASSWORD --><dd><a href="{U_SEND_PASSWORD}">{L_FORGOT_PASS}</a></dd><!-- ENDIF -->  				<!-- IF U_RESEND_ACTIVATION --><dd><a href="{U_RESEND_ACTIVATION}">{L_RESEND_ACTIVATION}</a></dd><!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/login_forum.html b/phpBB/styles/prosilver/template/login_forum.html index 18a95c0a8f..7fa9736a96 100644 --- a/phpBB/styles/prosilver/template/login_forum.html +++ b/phpBB/styles/prosilver/template/login_forum.html @@ -22,7 +22,7 @@  			<dl>  				<dt><label for="password">{L_PASSWORD}{L_COLON}</label></dt> -				<dd><input type="password" tabindex="1" id="password" name="password" size="25" class="inputbox narrow" /></dd> +				<dd><input type="password" tabindex="1" id="password" name="password" size="25" class="inputbox narrow" autocomplete="off" /></dd>  			</dl>  			{S_LOGIN_REDIRECT}  			<dl> diff --git a/phpBB/styles/prosilver/template/mcp_post.html b/phpBB/styles/prosilver/template/mcp_post.html index 10ec6f3ea9..81d1be795e 100644 --- a/phpBB/styles/prosilver/template/mcp_post.html +++ b/phpBB/styles/prosilver/template/mcp_post.html @@ -144,7 +144,7 @@  	</div>  </div> -<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST or S_CAN_CHGPOSTER --> +<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST or S_CAN_CHGPOSTER or S_MCP_POST_ADDITIONAL_OPTS -->  	<div class="panel">  		<div class="inner"> @@ -168,6 +168,8 @@  			</form>  		<!-- ENDIF --> +		<!-- EVENT mcp_post_additional_options --> +  		<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST -->  			<form method="post" id="mcp" action="{U_MCP_ACTION}"> diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 8749ce60e8..ecba72f6f4 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -18,7 +18,6 @@  	<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}" data-ajax-error-text-abort="{L_AJAX_ERROR_TEXT_ABORT}" data-ajax-error-text-timeout="{L_AJAX_ERROR_TEXT_TIMEOUT}" data-ajax-error-text-parsererror="{L_AJAX_ERROR_TEXT_PARSERERROR}">  		<div id="darken"> </div>  	</div> -	<div id="loading_indicator"></div>  	<div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}">  		<a href="#" class="alert_close"></a> diff --git a/phpBB/styles/prosilver/template/ucp_login_link.html b/phpBB/styles/prosilver/template/ucp_login_link.html index d3c6931ce3..be173318cb 100644 --- a/phpBB/styles/prosilver/template/ucp_login_link.html +++ b/phpBB/styles/prosilver/template/ucp_login_link.html @@ -36,7 +36,7 @@  				</dl>  				<dl>  					<dt><label for="{PASSWORD_CREDENTIAL}">{L_PASSWORD}{L_COLON}</label></dt> -					<dd><input type="password" tabindex="3" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" /></dd> +					<dd><input type="password" tabindex="3" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" autocomplete="off" /></dd>  				</dl>  				<!-- IF CAPTCHA_TEMPLATE and S_CONFIRM_CODE -->  					<!-- DEFINE $CAPTCHA_TAB_INDEX = 4 --> diff --git a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html index 2642b7a419..462a7f8f20 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html +++ b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html @@ -19,16 +19,16 @@  	</dl>  	<dl>  		<dt><label for="email">{L_EMAIL_ADDRESS}{L_COLON}</label></dt> -		<dd><!-- IF S_CHANGE_EMAIL --><input type="email" name="email" id="email" maxlength="100" value="{EMAIL}" class="inputbox" title="{L_EMAIL_ADDRESS}" /><!-- ELSE --><strong>{EMAIL}</strong><!-- ENDIF --></dd> +		<dd><!-- IF S_CHANGE_EMAIL --><input type="email" name="email" id="email" maxlength="100" value="{EMAIL}" class="inputbox" title="{L_EMAIL_ADDRESS}" autocomplete="off" /><!-- ELSE --><strong>{EMAIL}</strong><!-- ENDIF --></dd>  	</dl>  	<!-- IF S_CHANGE_PASSWORD -->  		<dl>  			<dt><label for="new_password">{L_NEW_PASSWORD}{L_COLON}</label><br /><span>{L_CHANGE_PASSWORD_EXPLAIN}</span></dt> -			<dd><input type="password" name="new_password" id="new_password" maxlength="255" value="{NEW_PASSWORD}" class="inputbox" title="{L_CHANGE_PASSWORD}" /></dd> +			<dd><input type="password" name="new_password" id="new_password" maxlength="255" value="{NEW_PASSWORD}" class="inputbox" title="{L_CHANGE_PASSWORD}" autocomplete="off" /></dd>  		</dl>  		<dl>  			<dt><label for="password_confirm">{L_CONFIRM_PASSWORD}{L_COLON}</label><br /><span>{L_CONFIRM_PASSWORD_EXPLAIN}</span></dt> -			<dd><input type="password" name="password_confirm" id="password_confirm" maxlength="255" value="{PASSWORD_CONFIRM}" class="inputbox" title="{L_CONFIRM_PASSWORD}" /></dd> +			<dd><input type="password" name="password_confirm" id="password_confirm" maxlength="255" value="{PASSWORD_CONFIRM}" class="inputbox" title="{L_CONFIRM_PASSWORD}" autocomplete="off" /></dd>  		</dl>  	<!-- ENDIF -->  	<!-- EVENT ucp_profile_register_details_after -->	 @@ -42,7 +42,7 @@  	<fieldset>  	<dl>  		<dt><label for="cur_password">{L_CURRENT_PASSWORD}{L_COLON}</label><br /><span><!-- IF S_CHANGE_PASSWORD -->{L_CURRENT_CHANGE_PASSWORD_EXPLAIN}<!-- ELSE -->{L_CURRENT_PASSWORD_EXPLAIN}<!-- ENDIF --></span></dt> -		<dd><input type="password" name="cur_password" id="cur_password" maxlength="255" value="{CUR_PASSWORD}" class="inputbox" title="{L_CURRENT_PASSWORD}" /></dd> +		<dd><input type="password" name="cur_password" id="cur_password" maxlength="255" value="{CUR_PASSWORD}" class="inputbox" title="{L_CURRENT_PASSWORD}" autocomplete="off" /></dd>  	</dl>  	</fieldset> diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index 020f69cb26..fafd0cce00 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -33,15 +33,15 @@  	</dl>  	<dl>  		<dt><label for="email">{L_EMAIL_ADDRESS}{L_COLON}</label></dt> -		<dd><input type="email" tabindex="2" name="email" id="email" size="25" maxlength="100" value="{EMAIL}" class="inputbox autowidth" title="{L_EMAIL_ADDRESS}" /></dd> +		<dd><input type="email" tabindex="2" name="email" id="email" size="25" maxlength="100" value="{EMAIL}" class="inputbox autowidth" title="{L_EMAIL_ADDRESS}" autocomplete="off" /></dd>  	</dl>  	<dl>  		<dt><label for="new_password">{L_PASSWORD}{L_COLON}</label><br /><span>{L_PASSWORD_EXPLAIN}</span></dt> -		<dd><input type="password" tabindex="4" name="new_password" id="new_password" size="25" value="{PASSWORD}" class="inputbox autowidth" title="{L_NEW_PASSWORD}" /></dd> +		<dd><input type="password" tabindex="4" name="new_password" id="new_password" size="25" value="{PASSWORD}" class="inputbox autowidth" title="{L_NEW_PASSWORD}" autocomplete="off" /></dd>  	</dl>  	<dl>  		<dt><label for="password_confirm">{L_CONFIRM_PASSWORD}{L_COLON}</label></dt> -		<dd><input type="password"  tabindex="5" name="password_confirm" id="password_confirm" size="25" value="{PASSWORD_CONFIRM}" class="inputbox autowidth" title="{L_CONFIRM_PASSWORD}" /></dd> +		<dd><input type="password"  tabindex="5" name="password_confirm" id="password_confirm" size="25" value="{PASSWORD_CONFIRM}" class="inputbox autowidth" title="{L_CONFIRM_PASSWORD}" autocomplete="off" /></dd>  	</dl>  	<!-- EVENT ucp_register_credentials_after --> diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index b1e9d1be2c..2679a2cd29 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -100,7 +100,7 @@  				</dl>  				<dl>  					<dt><label for="password">{L_PASSWORD}{L_COLON}</label></dt> -					<dd><input type="password" tabindex="2" id="password" name="password" size="25" class="inputbox autowidth" /></dd> +					<dd><input type="password" tabindex="2" id="password" name="password" size="25" class="inputbox autowidth" autocomplete="off" /></dd>  					<!-- IF S_AUTOLOGIN_ENABLED --><dd><label for="autologin"><input type="checkbox" name="autologin" id="autologin" tabindex="3" /> {L_LOG_ME_IN}</label></dd><!-- ENDIF -->  					<dd><label for="viewonline"><input type="checkbox" name="viewonline" id="viewonline" tabindex="4" /> {L_HIDE_ME}</label></dd>  				</dl> diff --git a/phpBB/styles/subsilver2/template/index_body.html b/phpBB/styles/subsilver2/template/index_body.html index bfc2229221..c0a8d5fd57 100644 --- a/phpBB/styles/subsilver2/template/index_body.html +++ b/phpBB/styles/subsilver2/template/index_body.html @@ -116,7 +116,7 @@  		<td class="cat"><h4><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a></h4></td>  	</tr>  	<tr> -		<td class="row1" align="center"><span class="genmed">{L_USERNAME}{L_COLON}</span> <input class="post" type="text" name="username" size="10" />  <span class="genmed">{L_PASSWORD}{L_COLON}</span> <input class="post" type="password" name="password" size="10" />  <!-- IF U_SEND_PASSWORD --><a href="{U_SEND_PASSWORD}">{L_FORGOT_PASS}</a>  <!-- ENDIF --> <!-- IF S_AUTOLOGIN_ENABLED --> <span class="gensmall">{L_LOG_ME_IN}</span> <input type="checkbox" class="radio" name="autologin" /><!-- ENDIF -->  <input type="submit" class="btnmain" name="login" value="{L_LOGIN}" /></td> +		<td class="row1" align="center"><span class="genmed">{L_USERNAME}{L_COLON}</span> <input class="post" type="text" name="username" size="10" />  <span class="genmed">{L_PASSWORD}{L_COLON}</span> <input class="post" type="password" name="password" size="10" autocomplete="off" />  <!-- IF U_SEND_PASSWORD --><a href="{U_SEND_PASSWORD}">{L_FORGOT_PASS}</a>  <!-- ENDIF --> <!-- IF S_AUTOLOGIN_ENABLED --> <span class="gensmall">{L_LOG_ME_IN}</span> <input type="checkbox" class="radio" name="autologin" /><!-- ENDIF -->  <input type="submit" class="btnmain" name="login" value="{L_LOGIN}" /></td>  	</tr>  	</table>  	{S_LOGIN_REDIRECT} diff --git a/phpBB/styles/subsilver2/template/login_body.html b/phpBB/styles/subsilver2/template/login_body.html index ed63e748cf..1067f3738d 100644 --- a/phpBB/styles/subsilver2/template/login_body.html +++ b/phpBB/styles/subsilver2/template/login_body.html @@ -44,7 +44,7 @@  		<tr>  			<td valign="top" <!-- IF S_ADMIN_AUTH -->style="width: 50%; text-align: {S_CONTENT_FLOW_END};"<!-- ENDIF -->><b class="gensmall">{L_PASSWORD}{L_COLON}</b></td>  			<td> -				<input class="post" type="password" name="{PASSWORD_CREDENTIAL}" size="25" tabindex="2" /> +				<input class="post" type="password" name="{PASSWORD_CREDENTIAL}" size="25" tabindex="2" autocomplete="off" />  				<!-- IF U_SEND_PASSWORD --><br /><a class="gensmall" href="{U_SEND_PASSWORD}">{L_FORGOT_PASS}</a><!-- ENDIF -->  				<!-- IF U_RESEND_ACTIVATION and not S_ADMIN_AUTH --><br /><a class="gensmall" href="{U_RESEND_ACTIVATION}">{L_RESEND_ACTIVATION}</a><!-- ENDIF -->  			</td> diff --git a/phpBB/styles/subsilver2/template/login_forum.html b/phpBB/styles/subsilver2/template/login_forum.html index 9a141fc295..2cda9f3452 100644 --- a/phpBB/styles/subsilver2/template/login_forum.html +++ b/phpBB/styles/subsilver2/template/login_forum.html @@ -30,7 +30,7 @@  			<!-- ENDIF -->  			<tr>   				<td class="gensmall"><b>{L_PASSWORD}{L_COLON}</b></td> -				<td><input class="post" type="password" name="password" size="25" tabindex="2" /></td> +				<td><input class="post" type="password" name="password" size="25" tabindex="2" autocomplete="off" /></td>  			</tr>  			</table>  		</td> diff --git a/phpBB/styles/subsilver2/template/mcp_post.html b/phpBB/styles/subsilver2/template/mcp_post.html index f5052ee2d0..1a29df94b0 100644 --- a/phpBB/styles/subsilver2/template/mcp_post.html +++ b/phpBB/styles/subsilver2/template/mcp_post.html @@ -143,7 +143,7 @@  	<!-- IF S_TOPIC_REVIEW --><!-- INCLUDE posting_topic_review.html --><!-- ENDIF -->  <!-- ELSE --> -	<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST or S_CAN_CHGPOSTER --> +	<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST or S_CAN_CHGPOSTER or S_MCP_POST_ADDITIONAL_OPTS -->  		<br /><a name="mod" class="anchor"></a>  		<table width="100%" cellpadding="3" cellspacing="1" border="0" class="tablebg"> @@ -156,6 +156,9 @@  				<td class="row2"><form method="post" name="mcp_chgposter" action="{U_POST_ACTION}"><input class="post" type="text" name="username" value="" /> <input class="btnmain" type="submit" value="{L_CONFIRM}" name="action[chgposter]" /><br /><span class="gensmall">[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</span><!-- IF S_USER_SELECT --><br /><select name="u">{S_USER_SELECT}</select> <input type="submit" class="btnmain" name="action[chgposter_ip]" value="{L_CONFIRM}" /><!-- ENDIF -->{S_FORM_TOKEN}</form></td>  			</tr>  		<!-- ENDIF --> + +		<!-- EVENT mcp_post_additional_options --> +  		<!-- IF S_CAN_LOCK_POST or S_CAN_DELETE_POST -->  			<tr>  				<td class="row1" valign="top"><b class="gen">{L_MOD_OPTIONS}</b></td> diff --git a/phpBB/styles/subsilver2/template/ucp_login_link.html b/phpBB/styles/subsilver2/template/ucp_login_link.html index 5d8e3ee27b..6db9890d8c 100644 --- a/phpBB/styles/subsilver2/template/ucp_login_link.html +++ b/phpBB/styles/subsilver2/template/ucp_login_link.html @@ -52,7 +52,7 @@  					<tr>  						<td><label for="{PASSWORD_CREDENTIAL}">{L_PASSWORD}{L_COLON}</label></td> -						<td><input type="password" tabindex="3" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" /></td> +						<td><input type="password" tabindex="3" id="{PASSWORD_CREDENTIAL}" name="{PASSWORD_CREDENTIAL}" size="25" class="inputbox autowidth" autocomplete="off" /></td>  					</tr>  					<!-- IF CAPTCHA_TEMPLATE and S_CONFIRM_CODE --> diff --git a/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html b/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html index 090d729326..862956a1d0 100644 --- a/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html +++ b/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html @@ -21,16 +21,16 @@  </tr>  <tr>  	<td class="row1" width="35%"><b class="genmed">{L_EMAIL_ADDRESS}{L_COLON} </b></td> -	<td class="row2"><!-- IF S_CHANGE_EMAIL --><input type="email" class="post" name="email" size="30" maxlength="100" value="{EMAIL}" /><!-- ELSE --><b class="gen">{EMAIL}</b><!-- ENDIF --></td> +	<td class="row2"><!-- IF S_CHANGE_EMAIL --><input type="email" class="post" name="email" size="30" maxlength="100" value="{EMAIL}" autocomplete="off" /><!-- ELSE --><b class="gen">{EMAIL}</b><!-- ENDIF --></td>  </tr>  <!-- IF S_CHANGE_PASSWORD -->  	<tr>  		<td class="row1" width="35%"><b class="genmed">{L_NEW_PASSWORD}{L_COLON} </b><br /><span class="gensmall">{L_CHANGE_PASSWORD_EXPLAIN}</span></td> -		<td class="row2"><input type="password" class="post" name="new_password" size="30" maxlength="255" value="{NEW_PASSWORD}" /></td> +		<td class="row2"><input type="password" class="post" name="new_password" size="30" maxlength="255" value="{NEW_PASSWORD}" autocomplete="off" /></td>  	</tr>  	<tr>  		<td class="row1" width="35%"><b class="genmed">{L_CONFIRM_PASSWORD}{L_COLON} </b><br /><span class="gensmall">{L_CONFIRM_PASSWORD_EXPLAIN}</span></td> -		<td class="row2"><input type="password" class="post" name="password_confirm" size="30" maxlength="255" value="{PASSWORD_CONFIRM}" /></td> +		<td class="row2"><input type="password" class="post" name="password_confirm" size="30" maxlength="255" value="{PASSWORD_CONFIRM}" autocomplete="off" /></td>  	</tr>  <!-- ENDIF -->  <!-- EVENT ucp_profile_register_details_after --> @@ -39,7 +39,7 @@  </tr>  <tr>  	<td class="row1" width="35%"><b class="genmed">{L_CURRENT_PASSWORD}{L_COLON} </b><br /><span class="gensmall"><!-- IF S_CHANGE_PASSWORD -->{L_CURRENT_CHANGE_PASSWORD_EXPLAIN}<!-- ELSE -->{L_CURRENT_PASSWORD_EXPLAIN}<!-- ENDIF --></span></td> -	<td class="row2"><input type="password" class="post" name="cur_password" size="30" maxlength="255" value="{CUR_PASSWORD}" /></td> +	<td class="row2"><input type="password" class="post" name="cur_password" size="30" maxlength="255" value="{CUR_PASSWORD}" autocomplete="off" /></td>  </tr>  <tr>  	<td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" />  <input class="btnlite" type="reset" value="{L_RESET}" name="reset" /></td> diff --git a/phpBB/styles/subsilver2/template/ucp_register.html b/phpBB/styles/subsilver2/template/ucp_register.html index 162fa2a020..9b9e164df4 100644 --- a/phpBB/styles/subsilver2/template/ucp_register.html +++ b/phpBB/styles/subsilver2/template/ucp_register.html @@ -41,15 +41,15 @@  </tr>  <tr>  	<td class="row1"><b class="genmed">{L_EMAIL_ADDRESS}{L_COLON} </b></td> -	<td class="row2"><input class="post" type="email" name="email" size="25" maxlength="100" value="{EMAIL}" /></td> +	<td class="row2"><input class="post" type="email" name="email" size="25" maxlength="100" value="{EMAIL}" autocomplete="off" /></td>  </tr>  <tr>  	<td class="row1"><b class="genmed">{L_PASSWORD}{L_COLON} </b><br /><span class="gensmall">{L_PASSWORD_EXPLAIN}</span></td> -	<td class="row2"><input class="post" type="password" name="new_password" size="25" value="{PASSWORD}" /></td> +	<td class="row2"><input class="post" type="password" name="new_password" size="25" value="{PASSWORD}" autocomplete="off" /></td>  </tr>  <tr>  	<td class="row1"><b class="genmed">{L_CONFIRM_PASSWORD}{L_COLON} </b></td> -	<td class="row2"><input class="post" type="password" name="password_confirm" size="25" value="{PASSWORD_CONFIRM}" /></td> +	<td class="row2"><input class="post" type="password" name="password_confirm" size="25" value="{PASSWORD_CONFIRM}" autocomplete="off" /></td>  </tr>  <!-- EVENT ucp_register_credentials_after -->  <!-- EVENT ucp_register_options_before --> diff --git a/phpBB/styles/subsilver2/template/viewforum_body.html b/phpBB/styles/subsilver2/template/viewforum_body.html index 906fdd7c63..83b01b9f6d 100644 --- a/phpBB/styles/subsilver2/template/viewforum_body.html +++ b/phpBB/styles/subsilver2/template/viewforum_body.html @@ -137,7 +137,7 @@  			<td class="cat"><h4><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a></h4></td>  		</tr>  		<tr> -			<td class="row1" align="center"><span class="genmed">{L_USERNAME}{L_COLON}</span> <input class="post" type="text" name="username" size="10" />  <span class="genmed">{L_PASSWORD}{L_COLON}</span> <input class="post" type="password" name="password" size="10" /><!-- IF S_AUTOLOGIN_ENABLED -->  <span class="gensmall">{L_LOG_ME_IN}</span> <input type="checkbox" class="radio" name="autologin" /><!-- ENDIF -->  <input type="submit" class="btnmain" name="login" value="{L_LOGIN}" /></td> +			<td class="row1" align="center"><span class="genmed">{L_USERNAME}{L_COLON}</span> <input class="post" type="text" name="username" size="10" />  <span class="genmed">{L_PASSWORD}{L_COLON}</span> <input class="post" type="password" name="password" size="10" autocomplete="off" /><!-- IF S_AUTOLOGIN_ENABLED -->  <span class="gensmall">{L_LOG_ME_IN}</span> <input type="checkbox" class="radio" name="autologin" /><!-- ENDIF -->  <input type="submit" class="btnmain" name="login" value="{L_LOGIN}" /></td>  		</tr>  		</table>  		{S_LOGIN_REDIRECT}  | 
