[Fusionforge-commits] FusionForge branch master updated. v6.0.5-1390-g5cb7e7c

Franck Villaume nerville at libremir.placard.fr.eu.org
Wed Jan 25 21:28:29 CET 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, master has been updated
       via  5cb7e7ce89682addc3827f5bee7c45558e5156ae (commit)
      from  81d4217528a8d71ef12d5906dc1bca6d2ab66243 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=5cb7e7ce89682addc3827f5bee7c45558e5156ae

commit 5cb7e7ce89682addc3827f5bee7c45558e5156ae
Author: Franck Villaume <franck.villaume at trivialdev.com>
Date:   Wed Jan 25 21:27:33 2017 +0100

    docman: add support for manual upload method in zip injection

diff --git a/src/CHANGES b/src/CHANGES
index 35895be..22ea18c 100644
--- a/src/CHANGES
+++ b/src/CHANGES
@@ -12,6 +12,7 @@ FusionForge 6.X:
 * Docman: support document versioning. (TrivialDev)
 * Docman: support cross ref. forum, documents, task or artifact. (TrivialDev)
 * Docman: add new document review feature. to review version, document and post comment to a document. (TrivialDev)
+* Docman: add manual upload method to inject zip feature. (TrivialDev)
 * FRS: link package release to tracker roadmap. (TrivialDev)
 * Layout: new dynamic quickNav menu: based on user activity to select 5 more visited projects (TrivialDev)
 * Plugin AuthBuiltin: add captcha after 3 attempts with the same login [#795] (TrivialDev)
@@ -29,17 +30,18 @@ FusionForge 6.X:
 * Taskboard: support multiple taskboards per project [#785] (TrivialDev)
 * Taskboard: support filtering tasks [#786] (TrivialDev)
 * Tracker: keep values in artifact new submit form on error. (TrivialDev)
-* Tracker: add new customfield: text regex (TrivialDev)
+* Tracker: add new option on customfield text: regex pattern validation (TrivialDev)
 * Tracker: add new customfield: User (TrivialDev)
 * Tracker: add new customfield: DateTime (TrivialDev)
 * Tracker: add new customfield: Release (TrivialDev)
 * Tracker: add support for mandatory fields on workflow of artifact (TrivialDev)
-* Tracker: add support for description on extrafield to be used in tooltip (TrivialDev)
-* Tracker: fix extrafield cloning when not using default template fusionforge project [#829] (TrivialDev)
+* Tracker: add support for description on customfield to be used in tooltip (TrivialDev)
+* Tracker: fix customfield cloning when not using default template fusionforge project [#829] (TrivialDev)
 * Tracker: add support for autoassign [#151] & [#149] (TrivialDev)
 * Tracker: add default value support for extrafields (TrivialDev)
 * Tracker: CSV export, support lastModifiedDate filtering (TrivialDev)
 * Tracker: add new customfield: Effort (TrivialDev)
+* Tracker: new widget oriented display to replace the old "2 columns" view. (TrivialDev)
 * Utils: cross ref document/release. Use [DNNN]/[RNNN] where NNN is the ID of the document/frs release. (TrivialDev)
 * Web UI: upgrade splitter jquery plugin to 0.20.0 (TrivialDev)
 * Web UI: upgrade jquery ui to 1.12.1 (TrivialDev)
diff --git a/src/common/docman/DocumentGroup.class.php b/src/common/docman/DocumentGroup.class.php
index 56d4dc7..e5a07d4 100644
--- a/src/common/docman/DocumentGroup.class.php
+++ b/src/common/docman/DocumentGroup.class.php
@@ -259,10 +259,6 @@ class DocumentGroup extends FFError {
 	 * @access	public
 	 */
 	function injectArchive($uploaded_data) {
-		if (!is_uploaded_file($uploaded_data['tmp_name'])) {
-			$this->setError(_('Invalid file name.'));
-			return false;
-		}
 		if (function_exists('finfo_open')) {
 			$finfo = finfo_open(FILEINFO_MIME_TYPE);
 			$uploaded_data_type = finfo_file($finfo, $uploaded_data['tmp_name']);
diff --git a/src/common/docman/actions/injectzip.php b/src/common/docman/actions/injectzip.php
index fd3a07d..f49a82f 100644
--- a/src/common/docman/actions/injectzip.php
+++ b/src/common/docman/actions/injectzip.php
@@ -3,7 +3,7 @@
  * FusionForge Documentation Manager
  *
  * Copyright 2010-2011, Franck Villaume - Capgemini
- * Copyright 2014,2015-2016, Franck Villaume - TrivialDev
+ * Copyright 2014,2015-2017, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -38,10 +38,25 @@ if (!forge_check_perm('docman', $group_id, 'approve')) {
 	session_redirect($return_url);
 }
 
-$uploaded_zip = getUploadedFile('uploaded_zip');
-if (empty($uploaded_zip['name'])) {
-	$error_msg = _('Missing file or limit size exceeded');
-	session_redirect($return_url);
+$uploadtype = getStringFromRequest('type');
+if ($uploadtype == 'httpupload') {
+	$uploaded_zip = getUploadedFile('uploaded_zip');
+	if (empty($uploaded_zip['name'])) {
+		$error_msg = _('Missing file or limit size exceeded');
+		session_redirect($return_url);
+	}
+	if (strlen($uploaded_zip['tmp_name']) > 0 && !is_uploaded_file($uploaded_zip['tmp_name'])) {
+		$error_msg = _('Invalid file name.');
+		session_redirect($return_url);
+	}
+} elseif ($uploadtype == 'manualupload') {
+	$uploaded_zip = array();
+	$uploaded_zip['type'] = 'application/zip';
+	$uploaded_zip['tmp_name'] = forge_get_config('groupdir_prefix').'/'.$g->getUnixName().'/incoming/'.getStringFromRequest('manual_path');
+	if (!is_file($uploaded_zip['tmp_name'])) {
+		$error_msg = _('Missing file');
+		session_redirect($return_url);
+	}
 }
 
 if ($dirid) {
diff --git a/src/common/docman/views/additem.php b/src/common/docman/views/additem.php
index bf31951..e2bee54 100644
--- a/src/common/docman/views/additem.php
+++ b/src/common/docman/views/additem.php
@@ -82,12 +82,40 @@ if (forge_check_perm('docman', $group_id, 'approve')) {
 		echo $HTML->warning_msg(_('You MUST first create at least one folder to upload your archive.'));
 	} else {
 		echo $HTML->openForm(array('id' => 'injectzip', 'name' => 'injectzip', 'method' => 'post', 'action' => '/docman/?group_id='.$group_id.'&action=injectzip&dirid='.$dirid, 'enctype' => 'multipart/form-data'));
-		echo html_ao('p');
-		echo html_e('label', array(), _('Upload archive')._(':'), false);
-		echo html_e('input', array('type' => 'file', 'name' => 'uploaded_zip', 'required' => 'required'));
-		echo html_e('span', array(), '('._('max upload size')._(': ').human_readable_bytes(util_get_maxuploadfilesize()).')', false);
-		echo html_e('input', array('id' => 'submitinjectzip', 'type' => 'button', 'value' => _('Inject Tree')));
-		echo html_ac(html_ap() -1);
+		if (forge_get_config('use_manual_uploads')) {
+			echo html_e('input', array('type' => 'radio', 'id' => 'buttonFileZip', 'name' => 'type', 'value' => 'httpupload', 'checked' => '	', 'required' => 'required')).html_e('span', array(), _('File'), false);
+			echo html_e('input', array('type' => 'radio', 'id' => 'buttonManualUploadZip', 'name' => 'type', 'value' => 'manualupload', 'required' => 'required')).html_e('span', array(), _('Already-uploaded file'), false);
+		}
+		echo html_e('div', array('id' => 'upload_zip_p'), html_e('input', array('type' => 'file', 'id' => 'uploaded_zip', 'name' => 'uploaded_zip', 'required' => 'required')).
+					html_e('span', array(), '('._('max upload size')._(': ').human_readable_bytes(util_get_maxuploadfilesize()).')', false));
+		if (forge_get_config('use_manual_uploads')) {
+			$incoming = forge_get_config('groupdir_prefix')."/".$g->getUnixName()."/incoming";
+			$manual_files_arr = ls($incoming, true, '/\.zip$/');
+			if (count($manual_files_arr)) {
+				echo html_e('div', array('id' => 'manual_upload_p'), html_build_select_box_from_arrays($manual_files_arr, $manual_files_arr, 'manual_path', '').
+						html_e('br').
+						html_e('span', array(), sprintf(_('Pick a file already uploaded (by SFTP or SCP) to the <a href="%1$s">project\'s incoming directory</a> (%2$s).'),
+										'sftp://'.forge_get_config('shell_host').$incoming.'/', $incoming), false));
+			} else {
+				echo $HTML->warning_msg(sprintf(_('You need first to upload file in %s'), $incoming), array('id' => 'manual_upload_p'));
+			}
+			$javascript = <<<'EOS'
+				jQuery('#manual_upload_p').hide();
+				jQuery('#buttonFileZip').click(function() {
+									jQuery('#upload_zip_p').show();
+									jQuery('#uploaded_zip').attr('required', 'required');
+									jQuery('#manual_upload_p').hide();
+									});
+				jQuery('#buttonManualUploadZip').click(function() {
+									jQuery('#upload_zip_p').hide();
+									jQuery('#uploaded_zip').removeAttr('required');
+									jQuery('#manual_upload_p').show();
+									});
+
+EOS;
+			echo html_e('script', array( 'type'=>'text/javascript'), '//<![CDATA['."\n".'jQuery(function(){'.$javascript.'});'."\n".'//]]>');
+		}
+		echo html_e('p', array(), html_e('input', array('id' => 'submitinjectzip', 'type' => 'button', 'value' => _('Inject Tree'))));
 		echo $HTML->closeForm();
 	}
 	echo html_ac(html_ap() -2);

-----------------------------------------------------------------------

Summary of changes:
 src/CHANGES                               |  8 ++++---
 src/common/docman/DocumentGroup.class.php |  4 ----
 src/common/docman/actions/injectzip.php   | 25 +++++++++++++++----
 src/common/docman/views/additem.php       | 40 ++++++++++++++++++++++++++-----
 4 files changed, 59 insertions(+), 18 deletions(-)


hooks/post-receive
-- 
FusionForge



More information about the Fusionforge-commits mailing list