* implemented wiki attachment
** added wiki_attachment table ** enhanced wikicreole to support a relative image URL. * introduced 'ldap_server_uri' to take over 'ldap_server_host' and 'ldap_server_uri' deprecated. ** mainly done to support ldaps.
This commit is contained in:
		| @ -9,12 +9,14 @@ install-data-hook: | |||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/svnrepo" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/svnrepo" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/files" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/files" | ||||||
|  | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/attachments" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@LOGDIR@" | 	$(INSTALL) -d "$(DESTDIR)@LOGDIR@" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@CACHEDIR@" | 	$(INSTALL) -d "$(DESTDIR)@CACHEDIR@" | ||||||
|  |  | ||||||
| uninstall-hook: | uninstall-hook: | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/svnrepo" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/attachments" | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/files" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/files" | ||||||
|  | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/svnrepo" | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@" | ||||||
| 	$(RMDIR) "$(DESTDIR)@LOGDIR@" | 	$(RMDIR) "$(DESTDIR)@LOGDIR@" | ||||||
| 	$(RMDIR) "$(DESTDIR)@CACHEDIR@" | 	$(RMDIR) "$(DESTDIR)@CACHEDIR@" | ||||||
|  | |||||||
| @ -694,12 +694,14 @@ install-data-hook: | |||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/svnrepo" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/svnrepo" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/files" | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/files" | ||||||
|  | 	$(INSTALL) -d "$(DESTDIR)@DEPOTDIR@/attachments" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@LOGDIR@" | 	$(INSTALL) -d "$(DESTDIR)@LOGDIR@" | ||||||
| 	$(INSTALL) -d "$(DESTDIR)@CACHEDIR@" | 	$(INSTALL) -d "$(DESTDIR)@CACHEDIR@" | ||||||
|  |  | ||||||
| uninstall-hook: | uninstall-hook: | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/svnrepo" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/svnrepo" | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/files" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/files" | ||||||
|  | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@/attachments" | ||||||
| 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@" | 	$(RMDIR) "$(DESTDIR)@DEPOTDIR@" | ||||||
| 	$(RMDIR) "$(DESTDIR)@LOGDIR@" | 	$(RMDIR) "$(DESTDIR)@LOGDIR@" | ||||||
| 	$(RMDIR) "$(DESTDIR)@CACHEDIR@" | 	$(RMDIR) "$(DESTDIR)@CACHEDIR@" | ||||||
|  | |||||||
| @ -25,8 +25,7 @@ database_prefix = "" | |||||||
| ; ${userid} and ${password} to represent the actual user ID | ; ${userid} and ${password} to represent the actual user ID | ||||||
| ; and the password respectively.  | ; and the password respectively.  | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| ldap_server_host = "127.0.0.1" | ldap_server_uri = "ldap://127.0.0.1:389" | ||||||
| ldap_server_port = "389" |  | ||||||
| ldap_server_protocol_version = "3" | ldap_server_protocol_version = "3" | ||||||
| ldap_userid_format = "${userid}" | ldap_userid_format = "${userid}" | ||||||
| ldap_password_format = "${password}" | ldap_password_format = "${password}" | ||||||
| @ -125,6 +124,11 @@ svnrepo_dir = "@DEPOTDIR@/svnrepo" | |||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| file_dir = "@DEPOTDIR@/files" | file_dir = "@DEPOTDIR@/files" | ||||||
|  |  | ||||||
|  | ;------------------------------------------------------------------------------ | ||||||
|  | ; directory to store wiki attachments | ||||||
|  | ;------------------------------------------------------------------------------ | ||||||
|  | attachment_dir = "@DEPOTDIR@/attachments" | ||||||
|  |  | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| ; log threshold | ; log threshold | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
|  | |||||||
| @ -50,6 +50,24 @@ CREATE TABLE wiki ( | |||||||
| 		ON DELETE RESTRICT ON UPDATE CASCADE | 		ON DELETE RESTRICT ON UPDATE CASCADE | ||||||
| ) charset=utf8 engine=InnoDB;	 | ) charset=utf8 engine=InnoDB;	 | ||||||
|  |  | ||||||
|  | CREATE TABLE wiki_attachment ( | ||||||
|  | 	projectid  VARCHAR(32)   NOT NULL, | ||||||
|  | 	wikiname   VARCHAR(255)  NOT NULL, | ||||||
|  | 	name       VARCHAR(255)  NOT NULL, | ||||||
|  | 	encname    VARCHAR(255)  NOT NULL, | ||||||
|  |  | ||||||
|  | 	createdon  DATETIME, | ||||||
|  | 	createdby  VARCHAR(32), | ||||||
|  |  | ||||||
|  | 	UNIQUE KEY wiki_attachment_id (projectid, wikiname, name), | ||||||
|  |  | ||||||
|  | 	CONSTRAINT wiki_attachment_projectid FOREIGN KEY (projectid) REFERENCES project(id) | ||||||
|  | 		ON DELETE RESTRICT ON UPDATE CASCADE, | ||||||
|  |  | ||||||
|  | 	CONSTRAINT wiki_attachment_wikiid FOREIGN KEY (projectid,wikiname) REFERENCES wiki(projectid,name) | ||||||
|  | 		ON DELETE RESTRICT ON UPDATE CASCADE | ||||||
|  | ) charset=utf8 engine=InnoDB;	 | ||||||
|  |  | ||||||
| CREATE TABLE issue ( | CREATE TABLE issue ( | ||||||
| 	projectid     VARCHAR(32)   NOT NULL, | 	projectid     VARCHAR(32)   NOT NULL, | ||||||
| 	id            BIGINT        NOT NULL, | 	id            BIGINT        NOT NULL, | ||||||
|  | |||||||
| @ -9,98 +9,97 @@ | |||||||
| */ | */ | ||||||
|  |  | ||||||
| $mimes = array(	'hqx'	=>	'application/mac-binhex40', | $mimes = array(	'hqx'	=>	'application/mac-binhex40', | ||||||
| 				'cpt'	=>	'application/mac-compactpro', | 		'cpt'	=>	'application/mac-compactpro', | ||||||
| 				'csv'	=>	array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'), | 		'csv'	=>	array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'), | ||||||
| 				'bin'	=>	'application/macbinary', | 		'bin'	=>	'application/macbinary', | ||||||
| 				'dms'	=>	'application/octet-stream', | 		'dms'	=>	'application/octet-stream', | ||||||
| 				'lha'	=>	'application/octet-stream', | 		'lha'	=>	'application/octet-stream', | ||||||
| 				'lzh'	=>	'application/octet-stream', | 		'lzh'	=>	'application/octet-stream', | ||||||
| 				'exe'	=>	'application/octet-stream', | 		'exe'	=>	'application/octet-stream', | ||||||
| 				'class'	=>	'application/octet-stream', | 		'class'	=>	'application/octet-stream', | ||||||
| 				'psd'	=>	'application/x-photoshop', | 		'psd'	=>	'application/x-photoshop', | ||||||
| 				'so'	=>	'application/octet-stream', | 		'so'	=>	'application/octet-stream', | ||||||
| 				'sea'	=>	'application/octet-stream', | 		'sea'	=>	'application/octet-stream', | ||||||
| 				'dll'	=>	'application/octet-stream', | 		'dll'	=>	'application/octet-stream', | ||||||
| 				'oda'	=>	'application/oda', | 		'oda'	=>	'application/oda', | ||||||
| 				'pdf'	=>	array('application/pdf', 'application/x-download'), | 		'pdf'	=>	array('application/pdf', 'application/x-download'), | ||||||
| 				'ai'	=>	'application/postscript', | 		'ai'	=>	'application/postscript', | ||||||
| 				'eps'	=>	'application/postscript', | 		'eps'	=>	'application/postscript', | ||||||
| 				'ps'	=>	'application/postscript', | 		'ps'	=>	'application/postscript', | ||||||
| 				'smi'	=>	'application/smil', | 		'smi'	=>	'application/smil', | ||||||
| 				'smil'	=>	'application/smil', | 		'smil'	=>	'application/smil', | ||||||
| 				'mif'	=>	'application/vnd.mif', | 		'mif'	=>	'application/vnd.mif', | ||||||
| 				'xls'	=>	array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'), | 		'xls'	=>	array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'), | ||||||
| 				'ppt'	=>	array('application/powerpoint', 'application/vnd.ms-powerpoint'), | 		'ppt'	=>	array('application/powerpoint', 'application/vnd.ms-powerpoint'), | ||||||
| 				'wbxml'	=>	'application/wbxml', | 		'wbxml'	=>	'application/wbxml', | ||||||
| 				'wmlc'	=>	'application/wmlc', | 		'wmlc'	=>	'application/wmlc', | ||||||
| 				'dcr'	=>	'application/x-director', | 		'dcr'	=>	'application/x-director', | ||||||
| 				'dir'	=>	'application/x-director', | 		'dir'	=>	'application/x-director', | ||||||
| 				'dxr'	=>	'application/x-director', | 		'dxr'	=>	'application/x-director', | ||||||
| 				'dvi'	=>	'application/x-dvi', | 		'dvi'	=>	'application/x-dvi', | ||||||
| 				'gtar'	=>	'application/x-gtar', | 		'gtar'	=>	'application/x-gtar', | ||||||
| 				'gz'	=>	'application/x-gzip', | 		'gz'	=>	'application/x-gzip', | ||||||
| 				'php'	=>	'application/x-httpd-php', | 		'php'	=>	'application/x-httpd-php', | ||||||
| 				'php4'	=>	'application/x-httpd-php', | 		'php4'	=>	'application/x-httpd-php', | ||||||
| 				'php3'	=>	'application/x-httpd-php', | 		'php3'	=>	'application/x-httpd-php', | ||||||
| 				'phtml'	=>	'application/x-httpd-php', | 		'phtml'	=>	'application/x-httpd-php', | ||||||
| 				'phps'	=>	'application/x-httpd-php-source', | 		'phps'	=>	'application/x-httpd-php-source', | ||||||
| 				'js'	=>	'application/x-javascript', | 		'js'	=>	'application/x-javascript', | ||||||
| 				'swf'	=>	'application/x-shockwave-flash', | 		'swf'	=>	'application/x-shockwave-flash', | ||||||
| 				'sit'	=>	'application/x-stuffit', | 		'sit'	=>	'application/x-stuffit', | ||||||
| 				'tar'	=>	'application/x-tar', | 		'tar'	=>	'application/x-tar', | ||||||
| 				'tgz'	=>	'application/x-tar', | 		'tgz'	=>	'application/x-tar', | ||||||
| 				'xhtml'	=>	'application/xhtml+xml', | 		'xhtml'	=>	'application/xhtml+xml', | ||||||
| 				'xht'	=>	'application/xhtml+xml', | 		'xht'	=>	'application/xhtml+xml', | ||||||
| 				'zip'	=>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'), | 		'zip'	=>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'), | ||||||
| 				'mid'	=>	'audio/midi', | 		'mid'	=>	'audio/midi', | ||||||
| 				'midi'	=>	'audio/midi', | 		'midi'	=>	'audio/midi', | ||||||
| 				'mpga'	=>	'audio/mpeg', | 		'mpga'	=>	'audio/mpeg', | ||||||
| 				'mp2'	=>	'audio/mpeg', | 		'mp2'	=>	'audio/mpeg', | ||||||
| 				'mp3'	=>	array('audio/mpeg', 'audio/mpg'), | 		'mp3'	=>	array('audio/mpeg', 'audio/mpg'), | ||||||
| 				'aif'	=>	'audio/x-aiff', | 		'aif'	=>	'audio/x-aiff', | ||||||
| 				'aiff'	=>	'audio/x-aiff', | 		'aiff'	=>	'audio/x-aiff', | ||||||
| 				'aifc'	=>	'audio/x-aiff', | 		'aifc'	=>	'audio/x-aiff', | ||||||
| 				'ram'	=>	'audio/x-pn-realaudio', | 		'ram'	=>	'audio/x-pn-realaudio', | ||||||
| 				'rm'	=>	'audio/x-pn-realaudio', | 		'rm'	=>	'audio/x-pn-realaudio', | ||||||
| 				'rpm'	=>	array('audio/x-pn-realaudio-plugin', 'application/x-rpm'), | 		'rpm'	=>	array('audio/x-pn-realaudio-plugin', 'application/x-rpm'), | ||||||
| 				'ra'	=>	'audio/x-realaudio', | 		'ra'	=>	'audio/x-realaudio', | ||||||
| 				'rv'	=>	'video/vnd.rn-realvideo', | 		'rv'	=>	'video/vnd.rn-realvideo', | ||||||
| 				'wav'	=>	'audio/x-wav', | 		'wav'	=>	'audio/x-wav', | ||||||
| 				'bmp'	=>	'image/bmp', | 		'bmp'	=>	'image/bmp', | ||||||
| 				'gif'	=>	'image/gif', | 		'gif'	=>	'image/gif', | ||||||
| 				'jpeg'	=>	array('image/jpeg', 'image/pjpeg'), | 		'jpeg'	=>	array('image/jpeg', 'image/pjpeg'), | ||||||
| 				'jpg'	=>	array('image/jpeg', 'image/pjpeg'), | 		'jpg'	=>	array('image/jpeg', 'image/pjpeg'), | ||||||
| 				'jpe'	=>	array('image/jpeg', 'image/pjpeg'), | 		'jpe'	=>	array('image/jpeg', 'image/pjpeg'), | ||||||
| 				'png'	=>	array('image/png',  'image/x-png'), | 		'png'	=>	array('image/png',  'image/x-png'), | ||||||
| 				'tiff'	=>	'image/tiff', | 		'tiff'	=>	'image/tiff', | ||||||
| 				'tif'	=>	'image/tiff', | 		'tif'	=>	'image/tiff', | ||||||
| 				'css'	=>	'text/css', | 		'css'	=>	'text/css', | ||||||
| 				'html'	=>	'text/html', | 		'html'	=>	'text/html', | ||||||
| 				'htm'	=>	'text/html', | 		'htm'	=>	'text/html', | ||||||
| 				'shtml'	=>	'text/html', | 		'shtml'	=>	'text/html', | ||||||
| 				'txt'	=>	'text/plain', | 		'txt'	=>	'text/plain', | ||||||
| 				'text'	=>	'text/plain', | 		'text'	=>	'text/plain', | ||||||
| 				'log'	=>	array('text/plain', 'text/x-log'), | 		'log'	=>	array('text/plain', 'text/x-log'), | ||||||
| 				'rtx'	=>	'text/richtext', | 		'rtx'	=>	'text/richtext', | ||||||
| 				'rtf'	=>	'text/rtf', | 		'rtf'	=>	'text/rtf', | ||||||
| 				'xml'	=>	'text/xml', | 		'xml'	=>	'text/xml', | ||||||
| 				'xsl'	=>	'text/xml', | 		'xsl'	=>	'text/xml', | ||||||
| 				'mpeg'	=>	'video/mpeg', | 		'mpeg'	=>	'video/mpeg', | ||||||
| 				'mpg'	=>	'video/mpeg', | 		'mpg'	=>	'video/mpeg', | ||||||
| 				'mpe'	=>	'video/mpeg', | 		'mpe'	=>	'video/mpeg', | ||||||
| 				'qt'	=>	'video/quicktime', | 		'qt'	=>	'video/quicktime', | ||||||
| 				'mov'	=>	'video/quicktime', | 		'mov'	=>	'video/quicktime', | ||||||
| 				'avi'	=>	'video/x-msvideo', | 		'avi'	=>	'video/x-msvideo', | ||||||
| 				'movie'	=>	'video/x-sgi-movie', | 		'movie'	=>	'video/x-sgi-movie', | ||||||
| 				'doc'	=>	'application/msword', | 		'doc'	=>	'application/msword', | ||||||
| 				'docx'	=>	'application/vnd.openxmlformats-officedocument.wordprocessingml.document', | 		'docx'	=>	'application/vnd.openxmlformats-officedocument.wordprocessingml.document', | ||||||
| 				'xlsx'	=>	'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | 		'xlsx'	=>	'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | ||||||
| 				'word'	=>	array('application/msword', 'application/octet-stream'), | 		'word'	=>	array('application/msword', 'application/octet-stream'), | ||||||
| 				'xl'	=>	'application/excel', | 		'xl'	=>	'application/excel', | ||||||
| 				'eml'	=>	'message/rfc822', | 		'eml'	=>	'message/rfc822', | ||||||
| 				'odt'   =>      'application/vnd.oasis.opendocument.text' | 		'odt'   =>      'application/vnd.oasis.opendocument.text' | ||||||
| 			); | ); | ||||||
|  |  | ||||||
|  |  | ||||||
| /* End of file mimes.php */ | /* End of file mimes.php */ | ||||||
| /* Location: ./system/application/config/mimes.php */ | /* Location: ./system/application/config/mimes.php */ | ||||||
|  | |||||||
| @ -302,9 +302,8 @@ class File extends Controller | |||||||
| 							$md5sum = md5_file ($upload['full_path']); | 							$md5sum = md5_file ($upload['full_path']); | ||||||
| 							if ($md5sum === FALSE) | 							if ($md5sum === FALSE) | ||||||
| 							{ | 							{ | ||||||
| 								unlink (CODEPOT_FILE_DIR . "/{$file->encname}"); | 								@unlink ($upload['full_path']); | ||||||
|  | 								$data['message'] = "CANNOT GET MD5SUM - {$file->name}"; | ||||||
| 								$data['message'] = "CANNOT GET MD5SUM OF FILE - {$file->name}"; |  | ||||||
| 								$data['file'] = $file; | 								$data['file'] = $file; | ||||||
| 								$this->load->view ($this->VIEW_EDIT, $data); | 								$this->load->view ($this->VIEW_EDIT, $data); | ||||||
| 							} | 							} | ||||||
|  | |||||||
| @ -454,6 +454,25 @@ class Site extends Controller | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function image ($xlink = '') | ||||||
|  | 	{ | ||||||
|  | 		$login = $this->login->getUser (); | ||||||
|  | 		if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '') | ||||||
|  | 			redirect ('main/signin'); | ||||||
|  |  | ||||||
|  | 		$data['login'] = $login; | ||||||
|  |  | ||||||
|  | 		$linkname = $this->converter->HexToAscii ($xlink); | ||||||
|  |  | ||||||
|  | 		$part = explode (':', $linkname); | ||||||
|  | 		if (count($part) == 3) | ||||||
|  | 		{ | ||||||
|  | 			$hexwikiname = $this->converter->AsciiTohex($part[1]); | ||||||
|  | 			$hexattname = $this->converter->AsciiTohex($part[2]); | ||||||
|  | 			redirect ("wiki/attachment/{$part[0]}/{$hexwikiname}/{$hexattname}"); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ class Wiki extends Controller | |||||||
|  |  | ||||||
| 		$this->load->library ('Language', 'lang'); | 		$this->load->library ('Language', 'lang'); | ||||||
| 		$this->lang->load ('common', CODEPOT_LANG); | 		$this->lang->load ('common', CODEPOT_LANG); | ||||||
|  | 		$this->lang->load ('wiki', CODEPOT_LANG); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	function home ($projectid = '') | 	function home ($projectid = '') | ||||||
| @ -98,7 +98,8 @@ class Wiki extends Controller | |||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 		{ | 		{ | ||||||
| 			$link = $this->wikihelper->parseLink ($name, $projectid, $this->converter); | 			$link = $this->wikihelper->parseLink ( | ||||||
|  | 				$name, $projectid, $this->converter); | ||||||
| 			if ($link === FALSE) | 			if ($link === FALSE) | ||||||
| 			{ | 			{ | ||||||
| 				$data['project'] = $project; | 				$data['project'] = $project; | ||||||
| @ -132,9 +133,8 @@ class Wiki extends Controller | |||||||
| 				else | 				else | ||||||
| 				{ | 				{ | ||||||
| 					$data['project'] = $project; | 					$data['project'] = $project; | ||||||
| 					$data['message'] =  | 					$data['message'] = sprintf ( | ||||||
| 						$this->lang->line('MSG_NO_SUCH_WIKI_PAGE') .  | 						$this->lang->line('WIKI_MSG_NO_SUCH_PAGE'), $name); | ||||||
| 						" - {$name}"; |  | ||||||
| 					$this->load->view ($this->VIEW_ERROR, $data); | 					$this->load->view ($this->VIEW_ERROR, $data); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| @ -157,10 +157,126 @@ class Wiki extends Controller | |||||||
| 		$this->_show_wiki ($projectid, $name, FALSE); | 		$this->_show_wiki ($projectid, $name, FALSE); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function attachment0 ($projectid = '', $target = '') | ||||||
|  | 	{ | ||||||
|  | 		//$target => projectid:wikiname:attachment | ||||||
|  |  | ||||||
|  | 		$login = $this->login->getUser (); | ||||||
|  | 		if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '') | ||||||
|  | 			redirect ('main/signin'); | ||||||
|  |  | ||||||
|  | 		if ($target == '') | ||||||
|  | 		{ | ||||||
|  | 			$data['login'] = $login; | ||||||
|  | 			$data['message'] = 'INVALID PARAMETERS'; | ||||||
|  | 			$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$target = $this->converter->HexToAscii ($target); | ||||||
|  | 		$part = explode (':', $target); | ||||||
|  | 		if (count($part) == 3) | ||||||
|  | 		{ | ||||||
|  | 			if ($part[0] == '') $part[0] = $projectid;	 | ||||||
|  | 			$this->_handle_attachment ($login, $part[0], $part[1], $part[2]); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function attachment ($projectid = '', $wikiname = '', $name = '') | ||||||
|  | 	{ | ||||||
|  | 		$login = $this->login->getUser (); | ||||||
|  | 		if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '') | ||||||
|  | 			redirect ('main/signin'); | ||||||
|  |  | ||||||
|  | 		if ($wikiname == '' || $name == '') | ||||||
|  | 		{ | ||||||
|  | 			$data['login'] = $login; | ||||||
|  | 			$data['message'] = 'INVALID PARAMETERS'; | ||||||
|  | 			$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$wikiname = $this->converter->HexToAscii ($wikiname); | ||||||
|  | 		$name = $this->converter->HexToAscii ($name); | ||||||
|  |  | ||||||
|  | 		$part = explode (':', $name); | ||||||
|  | 		if (count($part) == 3) | ||||||
|  | 		{ | ||||||
|  | 			if ($part[0] != '') $projectid = $part[0]; | ||||||
|  | 			if ($part[1] != '') $wikiname = $part[1]; | ||||||
|  | 			if ($part[2] != '') $name = $part[2]; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$this->_handle_attachment ($login, $projectid, $wikiname, $name); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function _handle_attachment ($login, $projectid, $wikiname, $name) | ||||||
|  | 	{ | ||||||
|  | 		$this->load->model ('ProjectModel', 'projects'); | ||||||
|  | 		$this->load->model ('WikiModel', 'wikis'); | ||||||
|  |  | ||||||
|  | 		$data['login'] = $login; | ||||||
|  |  | ||||||
|  | 		$project = $this->projects->get ($projectid); | ||||||
|  | 		if ($project === FALSE) | ||||||
|  | 		{ | ||||||
|  | 			$data['message'] = 'DATABASE ERROR'; | ||||||
|  | 			$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 		} | ||||||
|  | 		else if ($project === NULL) | ||||||
|  | 		{ | ||||||
|  | 			$data['message'] =  | ||||||
|  | 				$this->lang->line('MSG_NO_SUCH_PROJECT') .  | ||||||
|  | 				" - {$projectid}"; | ||||||
|  | 			$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			$att = $this->wikis->getAttachment ($login['id'], $project, $wikiname, $name); | ||||||
|  | 			if ($att == FALSE) | ||||||
|  | 			{ | ||||||
|  | 				$data['project'] = $project; | ||||||
|  | 				$data['message'] = 'DATABASE ERROR'; | ||||||
|  | 				$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			else if ($att === NULL) | ||||||
|  | 			{ | ||||||
|  | 				$data['project'] = $project; | ||||||
|  | 				$data['message'] = sprintf ( | ||||||
|  | 					$this->lang->line('MSG_WIKI_NO_SUCH_ATTACHMENT'), $name); | ||||||
|  | 				$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			$path = CODEPOT_ATTACHMENT_DIR . "/{$att->encname}"; | ||||||
|  | 				 | ||||||
|  | 			$mtime = @filemtime ($path); | ||||||
|  | 			if ($mtime === FALSE) $mtime = time(); | ||||||
|  | 			header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $mtime) . ' GMT'); | ||||||
|  | 			header ('Content-Type: ' . mime_content_type($path)); | ||||||
|  | 			header("Content-Disposition: filename={$name}"); | ||||||
|  | 			$len = @filesize($path); | ||||||
|  | 			if ($len !== FALSE) header("Content-Length: {$len}"); | ||||||
|  | 			//header("Content-Transfer-Encoding: binary"); | ||||||
|  | 			flush (); | ||||||
|  |  | ||||||
|  | 			$x = @readfile($path); | ||||||
|  | 			if ($x === FALSE) | ||||||
|  | 			{ | ||||||
|  | 				$data['project'] = $project; | ||||||
|  | 				$data['message'] = sprintf ( | ||||||
|  | 					$this->lang->line('MSG_WIKI_FAILED_TO_READ_ATTACHMENT'), $name); | ||||||
|  | 				$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	function _edit_wiki ($projectid, $name, $mode) | 	function _edit_wiki ($projectid, $name, $mode) | ||||||
| 	{ | 	{ | ||||||
| 		$this->load->helper ('form'); | 		$this->load->helper ('form'); | ||||||
| 		$this->load->library ('form_validation'); | 		$this->load->library ('form_validation'); | ||||||
|  | 		$this->load->library ('upload'); | ||||||
|  |  | ||||||
| 		$this->load->model ('ProjectModel', 'projects'); | 		$this->load->model ('ProjectModel', 'projects'); | ||||||
| 		$this->load->model ('WikiModel', 'wikis'); | 		$this->load->model ('WikiModel', 'wikis'); | ||||||
|  |  | ||||||
| @ -208,9 +324,39 @@ class Wiki extends Controller | |||||||
| 			if ($this->input->post('wiki')) | 			if ($this->input->post('wiki')) | ||||||
| 			{ | 			{ | ||||||
| 				$wiki->projectid = $this->input->post('wiki_projectid'); | 				$wiki->projectid = $this->input->post('wiki_projectid'); | ||||||
|  |  | ||||||
| 				$wiki->name = $this->input->post('wiki_name'); | 				$wiki->name = $this->input->post('wiki_name'); | ||||||
| 				$wiki->text = $this->input->post('wiki_text'); | 				$wiki->text = $this->input->post('wiki_text'); | ||||||
|  |  | ||||||
|  | 				$wiki->delete_attachments = array(); | ||||||
|  | 				$delatts = $this->input->post('wiki_delete_attachment'); | ||||||
|  |  | ||||||
|  | 				if (!empty($delatts)) | ||||||
|  | 				{ | ||||||
|  | 					foreach ($delatts as $att) | ||||||
|  | 					{ | ||||||
|  | 						$atpos = strpos ($att, '@');	 | ||||||
|  | 						if ($atpos === FALSE) continue; | ||||||
|  |  | ||||||
|  | 						$attinfo['name'] = $this->converter->HexToAscii(substr ($att, 0, $atpos)); | ||||||
|  | 						$attinfo['encname'] = $this->converter->HexToAscii(substr ($att, $atpos + 1)); | ||||||
|  |  | ||||||
|  | 						array_push ( | ||||||
|  | 							$wiki->delete_attachments,  | ||||||
|  | 							(object)$attinfo | ||||||
|  | 						); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				$wiki->attachments = $this->wikis->getAttachments ( | ||||||
|  | 					$login['id'], $project, $wiki->name); | ||||||
|  | 				if ($wiki->attachments === FALSE) | ||||||
|  | 				{ | ||||||
|  | 					$data['message'] = 'DATABASE ERROR'; | ||||||
|  | 					$this->load->view ($this->VIEW_ERROR, $data);	 | ||||||
|  | 					return; | ||||||
|  | 				} | ||||||
|  |  | ||||||
| 				if ($this->form_validation->run()) | 				if ($this->form_validation->run()) | ||||||
| 				{ | 				{ | ||||||
| 					if ($this->wikihelper->_is_reserved ($wiki->name, FALSE)) | 					if ($this->wikihelper->_is_reserved ($wiki->name, FALSE)) | ||||||
| @ -221,17 +367,38 @@ class Wiki extends Controller | |||||||
| 					} | 					} | ||||||
| 					else | 					else | ||||||
| 					{ | 					{ | ||||||
|  | 						list($ret,$extra) =  | ||||||
|  | 							$this->_upload_attachments ('wiki_new_attachment'); | ||||||
|  | 						if ($ret === FALSE) | ||||||
|  | 						{ | ||||||
|  | 							$data['wiki'] = $wiki; | ||||||
|  | 							$data['message'] = $extra; | ||||||
|  | 							$this->load->view ($this->VIEW_EDIT, $data); | ||||||
|  | 							return; | ||||||
|  | 						} | ||||||
|  |  | ||||||
|  | 						$wiki->new_attachments = $extra; | ||||||
|  |  | ||||||
| 						$result = ($mode == 'update')? | 						$result = ($mode == 'update')? | ||||||
| 							$this->wikis->update ($login['id'], $wiki): | 							$this->wikis->update ($login['id'], $wiki): | ||||||
| 							$this->wikis->create ($login['id'], $wiki); | 							$this->wikis->create ($login['id'], $wiki); | ||||||
|  |  | ||||||
| 						if ($result === FALSE) | 						if ($result === FALSE) | ||||||
| 						{ | 						{ | ||||||
|  | 							foreach ($extra as $att)  | ||||||
|  | 								@unlink ($att['fullencpath']); | ||||||
|  |  | ||||||
| 							$data['message'] = 'DATABASE ERROR'; | 							$data['message'] = 'DATABASE ERROR'; | ||||||
| 							$data['wiki'] = $wiki; | 							$data['wiki'] = $wiki; | ||||||
| 							$this->load->view ($this->VIEW_EDIT, $data);	 | 							$this->load->view ($this->VIEW_EDIT, $data);	 | ||||||
| 						} | 						} | ||||||
| 						else | 						else | ||||||
| 						{ | 						{ | ||||||
|  | 							// delete attachments after database operation | ||||||
|  | 							// as 'delete' is not easy to restore. | ||||||
|  | 							foreach ($wiki->delete_attachments as $att) | ||||||
|  | 								@unlink (CODEPOT_ATTACHMENT_DIR . "/{$att->encname}"); | ||||||
|  |  | ||||||
| 							redirect ("wiki/show/{$project->id}/" .  | 							redirect ("wiki/show/{$project->id}/" .  | ||||||
| 								$this->converter->AsciiToHex($wiki->name)); | 								$this->converter->AsciiToHex($wiki->name)); | ||||||
| 						} | 						} | ||||||
| @ -257,7 +424,7 @@ class Wiki extends Controller | |||||||
| 					else if ($wiki == NULL) | 					else if ($wiki == NULL) | ||||||
| 					{ | 					{ | ||||||
| 						$data['message'] =  | 						$data['message'] =  | ||||||
| 							$this->lang->line('MSG_NO_SUCH_WIKI_PAGE') .  | 							$this->lang->line('WIKI_MSG_NO_SUCH_PAGE') .  | ||||||
| 							" - {$name}"; | 							" - {$name}"; | ||||||
| 						$this->load->view ($this->VIEW_ERROR, $data); | 						$this->load->view ($this->VIEW_ERROR, $data); | ||||||
| 					} | 					} | ||||||
| @ -383,9 +550,8 @@ class Wiki extends Controller | |||||||
| 				} | 				} | ||||||
| 				else if ($wiki === NULL) | 				else if ($wiki === NULL) | ||||||
| 				{ | 				{ | ||||||
| 					$data['message'] =  | 					$data['message'] = sprintf ( | ||||||
| 						$this->lang->line('MSG_NO_SUCH_WIKI_PAGE') .  | 						$this->lang->line('WIKI_MSG_NO_SUCH_PAGE'), $name); | ||||||
| 						" - {$name}"; |  | ||||||
| 					$this->load->view ($this->VIEW_ERROR, $data); | 					$this->load->view ($this->VIEW_ERROR, $data); | ||||||
| 				} | 				} | ||||||
| 				else | 				else | ||||||
| @ -398,4 +564,61 @@ class Wiki extends Controller | |||||||
|  |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function _upload_attachments ($id) | ||||||
|  | 	{ | ||||||
|  | 		$attno = 0; | ||||||
|  | 		$count = count($_FILES); | ||||||
|  |  | ||||||
|  | 		$attachments = array (); | ||||||
|  |  | ||||||
|  | 		for ($i = 0; $i < $count; $i++) | ||||||
|  | 		{	 | ||||||
|  | 			$field_name = "{$id}_{$i}"; | ||||||
|  |  | ||||||
|  | 			if (array_key_exists($field_name, $_FILES) && | ||||||
|  | 			    $_FILES[$field_name]['name'] != '') | ||||||
|  | 			{ | ||||||
|  | 				$fname = $_FILES[$field_name]['name']; | ||||||
|  | 				if (strpos ($fname, ':') !== FALSE) | ||||||
|  | 				{ | ||||||
|  | 					while ($attno > 0) | ||||||
|  | 						@unlink ($attachments[$attno--]['fullencpath']); | ||||||
|  | 					return array(FALSE,$this->lang->line('WIKI_MSG_ATTACHMENT_NAME_NO_COLON')); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				$ext = substr ($fname, strrpos ($fname, '.') + 1); | ||||||
|  |  | ||||||
|  | 				// delete all \" instances ... | ||||||
|  | 				$_FILES[$field_name]['type'] = | ||||||
|  | 					str_replace('\"', '', $_FILES[$field_name]['type']); | ||||||
|  | 				// delete all \\ instances ... | ||||||
|  | 				$_FILES[$field_name]['type'] = | ||||||
|  | 					str_replace('\\', '', $_FILES[$field_name]['type']); | ||||||
|  |  | ||||||
|  | 				$config['allowed_types'] = $ext; | ||||||
|  | 				$config['upload_path'] = CODEPOT_ATTACHMENT_DIR; | ||||||
|  | 				$config['max_size'] = CODEPOT_MAX_UPLOAD_SIZE; | ||||||
|  | 				$config['encrypt_name'] = TRUE; | ||||||
|  |  | ||||||
|  | 				$this->upload->initialize ($config); | ||||||
|  | 	 | ||||||
|  | 				if (!$this->upload->do_upload ($field_name)) | ||||||
|  | 				{ | ||||||
|  | 					while ($attno > 0) | ||||||
|  | 						@unlink ($attachments[$attno--]['fullencpath']); | ||||||
|  | 					return array(FALSE,$this->upload->display_errors('','')); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				$upload = $this->upload->data (); | ||||||
|  |  | ||||||
|  | 				$attachments[$attno++] = array ( | ||||||
|  | 					'name' => $fname, | ||||||
|  | 					'encname' => $upload['file_name'],  | ||||||
|  | 					'fullencpath' => $upload['full_path']); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		return array(TRUE,$attachments); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,7 +5,8 @@ www_DATA =  \ | |||||||
| 	issue_lang.php \ | 	issue_lang.php \ | ||||||
| 	index.html \ | 	index.html \ | ||||||
| 	project_lang.php \ | 	project_lang.php \ | ||||||
| 	site_lang.php | 	site_lang.php \ | ||||||
|  | 	wiki_lang.php | ||||||
|  |  | ||||||
| EXTRA_DIST = $(www_DATA) | EXTRA_DIST = $(www_DATA) | ||||||
|  |  | ||||||
|  | |||||||
| @ -171,7 +171,8 @@ www_DATA = \ | |||||||
| 	issue_lang.php \ | 	issue_lang.php \ | ||||||
| 	index.html \ | 	index.html \ | ||||||
| 	project_lang.php \ | 	project_lang.php \ | ||||||
| 	site_lang.php | 	site_lang.php \ | ||||||
|  | 	wiki_lang.php | ||||||
|  |  | ||||||
| EXTRA_DIST = $(www_DATA) | EXTRA_DIST = $(www_DATA) | ||||||
| all: all-am | all: all-am | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| <?php | <?php | ||||||
| $lang['Administration'] = 'Administration'; | $lang['Administration'] = 'Administration'; | ||||||
| $lang['All'] = 'All'; | $lang['All'] = 'All'; | ||||||
|  | $lang['Attachment'] = 'Attachment'; | ||||||
|  | $lang['Attachments'] = 'Attachments'; | ||||||
| $lang['Author'] = 'Author'; | $lang['Author'] = 'Author'; | ||||||
| $lang['Blame'] = 'Blame'; | $lang['Blame'] = 'Blame'; | ||||||
| $lang['Cancel'] = 'Cancel'; | $lang['Cancel'] = 'Cancel'; | ||||||
| @ -41,6 +43,7 @@ $lang['MD5'] = 'MD5'; | |||||||
| $lang['Member'] = 'Member'; | $lang['Member'] = 'Member'; | ||||||
| $lang['Members'] = 'Members'; | $lang['Members'] = 'Members'; | ||||||
| $lang['Message'] = 'Message'; | $lang['Message'] = 'Message'; | ||||||
|  | $lang['More'] = 'More'; | ||||||
| $lang['My issues'] = 'My issues'; | $lang['My issues'] = 'My issues'; | ||||||
| $lang['My projects'] = 'My projects'; | $lang['My projects'] = 'My projects'; | ||||||
| $lang['Name'] = 'Name'; | $lang['Name'] = 'Name'; | ||||||
| @ -93,7 +96,5 @@ $lang['MSG_NO_ISSUES_AVAIL'] = 'No outstanding issues'; | |||||||
| $lang['MSG_NO_SUCH_FILE'] = 'No such file'; | $lang['MSG_NO_SUCH_FILE'] = 'No such file'; | ||||||
| $lang['MSG_NO_SUCH_ISSUE'] = 'No such issue'; | $lang['MSG_NO_SUCH_ISSUE'] = 'No such issue'; | ||||||
| $lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; | $lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; | ||||||
| $lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page'; |  | ||||||
| $lang['MSG_NO_WIKIS_AVAIL'] = 'No wiki pages available'; |  | ||||||
| $lang['MSG_SURE_TO_DELETE_THIS'] = "I'm sure to delete this"; | $lang['MSG_SURE_TO_DELETE_THIS'] = "I'm sure to delete this"; | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -20,5 +20,6 @@ $lang['ISSUE_PRIORITY_OTHER'] = 'Other'; | |||||||
| $lang['ISSUE_MSG_CHANGED_X_TO_Z'] = "Changed <span class='quoted'>%s</span> to <span class='quoted'>%s</span>"; | $lang['ISSUE_MSG_CHANGED_X_TO_Z'] = "Changed <span class='quoted'>%s</span> to <span class='quoted'>%s</span>"; | ||||||
| $lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "Changed <span class='quoted'>%s</span> from <span class='quoted'>%s</span> to <span class='quoted'>%s</span>"; | $lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "Changed <span class='quoted'>%s</span> from <span class='quoted'>%s</span> to <span class='quoted'>%s</span>"; | ||||||
| $lang['ISSUE_MSG_CONFIRM_UNDO'] = 'Are you sure to undo the last change?'; | $lang['ISSUE_MSG_CONFIRM_UNDO'] = 'Are you sure to undo the last change?'; | ||||||
|  | $lang['ISSUE_MSG_CREATED'] = 'Created'; | ||||||
| $lang['ISSUE_MSG_TOTAL_NUM_ISSUES'] = 'Total %d issues'; | $lang['ISSUE_MSG_TOTAL_NUM_ISSUES'] = 'Total %d issues'; | ||||||
| ?> | ?> | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								codepot/src/codepot/language/english/wiki_lang.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								codepot/src/codepot/language/english/wiki_lang.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | <?php | ||||||
|  | $lang['WIKI_ATTACHMENTS'] = 'Attachments'; | ||||||
|  | $lang['WIKI_NEW_ATTACHMENTS'] = 'New attachments'; | ||||||
|  | $lang['WIKI_MORE_NEW_ATTACHMENTS'] = 'Add more'; | ||||||
|  |  | ||||||
|  | $lang['WIKI_MSG_ATTACHMENT_NAME_NO_COLON'] = 'Attachment name containing a colon'; | ||||||
|  | $lang['WIKI_MSG_FAILED_TO_READ_ATTACHMENT'] = 'Failed to read wiki attachment - %s'; | ||||||
|  | $lang['WIKI_MSG_NO_PAGES_AVAILABLE'] = 'No wiki pages available'; | ||||||
|  | $lang['WIKI_MSG_NO_SUCH_PAGE'] = 'No such wiki page - %s'; | ||||||
|  | $lang['WIKI_MSG_NO_SUCH_ATTACHMENT'] = 'No such wiki attachment - %s'; | ||||||
|  | ?> | ||||||
| @ -91,7 +91,5 @@ $lang['MSG_NO_ISSUES_AVAIL'] = 'Tidak ada issue'; | |||||||
| $lang['MSG_NO_SUCH_FILE'] = 'No such file'; | $lang['MSG_NO_SUCH_FILE'] = 'No such file'; | ||||||
| $lang['MSG_NO_SUCH_ISSUE'] = 'No such issue'; | $lang['MSG_NO_SUCH_ISSUE'] = 'No such issue'; | ||||||
| $lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; | $lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; | ||||||
| $lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page'; |  | ||||||
| $lang['MSG_NO_WIKIS_AVAIL'] = 'Tidak ada halaman wiki tersedia'; |  | ||||||
| $lang['MSG_SURE_TO_DELETE_THIS'] = "Saya yakin untuk menghapus"; | $lang['MSG_SURE_TO_DELETE_THIS'] = "Saya yakin untuk menghapus"; | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -5,7 +5,8 @@ www_DATA =  \ | |||||||
| 	issue_lang.php \ | 	issue_lang.php \ | ||||||
| 	index.html \ | 	index.html \ | ||||||
| 	project_lang.php \ | 	project_lang.php \ | ||||||
| 	site_lang.php  | 	site_lang.php \ | ||||||
|  | 	wiki_lang.php | ||||||
|  |  | ||||||
| EXTRA_DIST = $(www_DATA) | EXTRA_DIST = $(www_DATA) | ||||||
|  |  | ||||||
|  | |||||||
| @ -171,7 +171,8 @@ www_DATA = \ | |||||||
| 	issue_lang.php \ | 	issue_lang.php \ | ||||||
| 	index.html \ | 	index.html \ | ||||||
| 	project_lang.php \ | 	project_lang.php \ | ||||||
| 	site_lang.php  | 	site_lang.php \ | ||||||
|  | 	wiki_lang.php | ||||||
|  |  | ||||||
| EXTRA_DIST = $(www_DATA) | EXTRA_DIST = $(www_DATA) | ||||||
| all: all-am | all: all-am | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| <?php | <?php | ||||||
| $lang['Administration'] = '관리'; | $lang['Administration'] = '관리'; | ||||||
| $lang['All'] = '모두'; | $lang['All'] = '모두'; | ||||||
|  | $lang['Attachment'] = '첨부'; | ||||||
|  | $lang['Attachments'] = '첨부'; | ||||||
| $lang['Author'] = '저자'; | $lang['Author'] = '저자'; | ||||||
| $lang['Blame'] = '책임전가'; | $lang['Blame'] = '책임전가'; | ||||||
| $lang['Cancel'] = '취소'; | $lang['Cancel'] = '취소'; | ||||||
| @ -41,6 +43,7 @@ $lang['MD5'] = 'MD5'; | |||||||
| $lang['Member'] = '구성원'; | $lang['Member'] = '구성원'; | ||||||
| $lang['Members'] = '구성원'; | $lang['Members'] = '구성원'; | ||||||
| $lang['Message'] = '메시지'; | $lang['Message'] = '메시지'; | ||||||
|  | $lang['More'] = '더'; | ||||||
| $lang['My issues'] = '내 이슈'; | $lang['My issues'] = '내 이슈'; | ||||||
| $lang['My projects'] = '내 프로젝트'; | $lang['My projects'] = '내 프로젝트'; | ||||||
| $lang['Name'] = '이름'; | $lang['Name'] = '이름'; | ||||||
| @ -93,7 +96,5 @@ $lang['MSG_NO_ISSUES_AVAIL'] = '이슈항목이 없습니다'; | |||||||
| $lang['MSG_NO_SUCH_FILE'] = '파일이 없습니다'; | $lang['MSG_NO_SUCH_FILE'] = '파일이 없습니다'; | ||||||
| $lang['MSG_NO_SUCH_ISSUE'] = '이슈항목이 없습니다'; | $lang['MSG_NO_SUCH_ISSUE'] = '이슈항목이 없습니다'; | ||||||
| $lang['MSG_NO_SUCH_PROJECT'] = '프로젝트가 없습니다'; | $lang['MSG_NO_SUCH_PROJECT'] = '프로젝트가 없습니다'; | ||||||
| $lang['MSG_NO_SUCH_WIKI_PAGE'] = '위키페이지가 없습니다'; |  | ||||||
| $lang['MSG_NO_WIKIS_AVAIL'] = '사용가능한 위키페이지가 없습니다'; |  | ||||||
| $lang['MSG_SURE_TO_DELETE_THIS'] = '반드시 이것을 삭제하고 싶어요'; | $lang['MSG_SURE_TO_DELETE_THIS'] = '반드시 이것을 삭제하고 싶어요'; | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -20,5 +20,6 @@ $lang['ISSUE_PRIORITY_OTHER'] = '기타'; | |||||||
| $lang['ISSUE_MSG_CHANGED_X_TO_Z'] = "<span class='quoted'>%s</span>을/를 <span class='quoted'>%s</span>(으)로 변경"; | $lang['ISSUE_MSG_CHANGED_X_TO_Z'] = "<span class='quoted'>%s</span>을/를 <span class='quoted'>%s</span>(으)로 변경"; | ||||||
| $lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "<span class='quoted'>%s</span>을/를 <span class='quoted'>%s</span>에서  <span class='quoted'>%s</span>(으)로 변경"; | $lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "<span class='quoted'>%s</span>을/를 <span class='quoted'>%s</span>에서  <span class='quoted'>%s</span>(으)로 변경"; | ||||||
| $lang['ISSUE_MSG_CONFIRM_UNDO'] = '마지막 변경내용을 취소할까요?'; | $lang['ISSUE_MSG_CONFIRM_UNDO'] = '마지막 변경내용을 취소할까요?'; | ||||||
|  | $lang['ISSUE_MSG_CREATED'] = '생성됨'; | ||||||
| $lang['ISSUE_MSG_TOTAL_NUM_ISSUES'] = '전체 이슈 %d개'; | $lang['ISSUE_MSG_TOTAL_NUM_ISSUES'] = '전체 이슈 %d개'; | ||||||
| ?> | ?> | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								codepot/src/codepot/language/korean/wiki_lang.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								codepot/src/codepot/language/korean/wiki_lang.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | <?php | ||||||
|  | $lang['WIKI_ATTACHMENTS'] = '첨부파일'; | ||||||
|  | $lang['WIKI_NEW_ATTACHMENTS'] = '새로운 첨부파일'; | ||||||
|  | $lang['WIKI_MORE_NEW_ATTACHMENTS'] = '첨부파일 추가'; | ||||||
|  |  | ||||||
|  | $lang['WIKI_MSG_ATTACHMENT_NAME_NO_COLON'] = '첨부파일이름에 콜론기호가 포함될 수 없습니다'; | ||||||
|  | $lang['WIKI_MSG_FAILED_TO_READ_ATTACHMENT'] = '위키 첨부파일을 읽을 수 없습니다 - %s'; | ||||||
|  | $lang['WIKI_MSG_NO_PAGES_AVAILABLE'] = '위키 페이지가 없습니다'; | ||||||
|  | $lang['WIKI_MSG_NO_SUCH_PAGE'] = '위키 페이지를 찾을수 없습니다 - %s'; | ||||||
|  | $lang['WIKI_MSG_NO_SUCH_ATTACHMENT'] = '위키 첨부파일을 찾을 수 없습니다 - %s'; | ||||||
|  | ?> | ||||||
| @ -10,8 +10,9 @@ class LdapLoginModel extends LoginModel | |||||||
|  |  | ||||||
| 	function authenticate ($userid, $password) | 	function authenticate ($userid, $password) | ||||||
| 	{ | 	{ | ||||||
| 		$ldap = @ldap_connect ( | 		//$ldap = @ldap_connect ( | ||||||
| 			CODEPOT_LDAP_SERVER_HOST, CODEPOT_LDAP_SERVER_PORT); | 		//	CODEPOT_LDAP_SERVER_HOST, CODEPOT_LDAP_SERVER_PORT); | ||||||
|  | 		$ldap = @ldap_connect (CODEPOT_LDAP_SERVER_URI); | ||||||
| 		if ($ldap === FALSE) | 		if ($ldap === FALSE) | ||||||
| 		{ | 		{ | ||||||
| 			$this->setErrorMessage ("Can't connect to LDAP server"); | 			$this->setErrorMessage ("Can't connect to LDAP server"); | ||||||
|  | |||||||
| @ -11,15 +11,41 @@ class WikiModel extends Model | |||||||
| 	function get ($userid, $project, $name) | 	function get ($userid, $project, $name) | ||||||
| 	{ | 	{ | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
| 		$this->db->where ('projectid', $project->id); | 		$this->db->where ('projectid', $project->id); | ||||||
| 		$this->db->where ('name', $name); | 		$this->db->where ('name', $name); | ||||||
| 		$query = $this->db->get ('wiki'); | 		$query = $this->db->get ('wiki'); | ||||||
| 		$this->db->trans_complete (); | 		if ($this->db->trans_status() === FALSE)  | ||||||
|  | 		{ | ||||||
| 		if ($this->db->trans_status() === FALSE) return FALSE; | 			$this->db->trans_complete (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		$result = $query->result (); | 		$result = $query->result (); | ||||||
| 		return empty($result)? NULL: $result[0]; | 		if (empty($result)) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->trans_complete (); | ||||||
|  | 			return NULL; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |                 $this->db->select ('name,encname,createdon,createdby'); | ||||||
|  |                 $this->db->where ('projectid', $project->id); | ||||||
|  |                 $this->db->where ('wikiname', $name); | ||||||
|  |                 $this->db->order_by ('name', 'ASC'); | ||||||
|  |                 $query2 = $this->db->get ('wiki_attachment'); | ||||||
|  |  | ||||||
|  | 		if ($this->db->trans_status() === FALSE)  | ||||||
|  | 		{ | ||||||
|  | 			$this->db->trans_complete (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  |  | ||||||
|  | 		$wikis = $result[0]; | ||||||
|  | 		$wikis->attachments = $query2->result(); | ||||||
|  |  | ||||||
|  | 		return $wikis; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	function getAll ($userid, $project) | 	function getAll ($userid, $project) | ||||||
| @ -33,20 +59,91 @@ class WikiModel extends Model | |||||||
| 		return $query->result (); | 		return $query->result (); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function getAttachment ($userid, $project, $wikiname, $name) | ||||||
|  | 	{ | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
|  |                 $this->db->select ('name,encname,createdon,createdby'); | ||||||
|  | 		$this->db->where ('projectid', $project->id); | ||||||
|  | 		$this->db->where ('wikiname', $wikiname); | ||||||
|  | 		$this->db->where ('name', $name); | ||||||
|  |  | ||||||
|  | 		$query = $this->db->get ('wiki_attachment'); | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  |  | ||||||
|  | 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||||
|  | 		$result = $query->result (); | ||||||
|  | 		if (empty($result)) return NULL; | ||||||
|  |  | ||||||
|  | 		return $result[0]; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function getAttachments ($userid, $project, $wikiname) | ||||||
|  | 	{ | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
|  |                 $this->db->select ('name,encname,createdon,createdby'); | ||||||
|  | 		$this->db->where ('projectid', $project->id); | ||||||
|  | 		$this->db->where ('wikiname', $wikiname); | ||||||
|  |  | ||||||
|  | 		$query = $this->db->get ('wiki_attachment'); | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  |  | ||||||
|  | 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||||
|  | 		$result = $query->result (); | ||||||
|  |  | ||||||
|  | 		return $result; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	function create ($userid, $wiki) | 	function create ($userid, $wiki) | ||||||
| 	{ | 	{ | ||||||
| 		// TODO: check if userid can do this.. | 		// TODO: check if userid can do this.. | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_begin (); | ||||||
|  |  | ||||||
|  | 		$now = date('Y-m-d H:i:s'); | ||||||
|  |  | ||||||
| 		$this->db->set ('projectid', $wiki->projectid); | 		$this->db->set ('projectid', $wiki->projectid); | ||||||
| 		$this->db->set ('name', $wiki->name); | 		$this->db->set ('name', $wiki->name); | ||||||
| 		$this->db->set ('text', $wiki->text); | 		$this->db->set ('text', $wiki->text); | ||||||
| 		$this->db->set ('createdon', date('Y-m-d H:i:s')); | 		$this->db->set ('createdon', $now); | ||||||
| 		$this->db->set ('updatedon', date('Y-m-d H:i:s')); | 		$this->db->set ('updatedon', $now); | ||||||
| 		$this->db->set ('createdby', $userid); | 		$this->db->set ('createdby', $userid); | ||||||
| 		$this->db->set ('updatedby', $userid); | 		$this->db->set ('updatedby', $userid); | ||||||
| 		$this->db->insert ('wiki'); | 		$this->db->insert ('wiki'); | ||||||
|  |  | ||||||
|                 $this->db->set ('createdon', date('Y-m-d H:i:s')); | 		foreach ($wiki->delete_attachments as $att) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->where ('projectid', $wiki->projectid); | ||||||
|  | 			$this->db->where ('wikiname', $wiki->name); | ||||||
|  | 			$this->db->where ('name', $att->name); | ||||||
|  | 			$this->db->where ('encname', $att->encname); | ||||||
|  | 			$this->db->delete ('wiki_attachment'); | ||||||
|  |  | ||||||
|  | 			if ($this->db->trans_status() === FALSE) | ||||||
|  | 			{ | ||||||
|  | 				$this->db->trans_rollback (); | ||||||
|  | 				return FALSE; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if ($this->db->affected_rows() <= 0) | ||||||
|  | 			{ | ||||||
|  | 				$this->db->trans_rollback (); | ||||||
|  | 				return FALSE; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		foreach ($wiki->new_attachments as $att) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->set ('projectid', $wiki->projectid); | ||||||
|  | 			$this->db->set ('wikiname', $wiki->name); | ||||||
|  | 			$this->db->set ('name', $att['name']); | ||||||
|  | 			$this->db->set ('encname', $att['encname']); | ||||||
|  | 			$this->db->set ('createdon', $now); | ||||||
|  | 			$this->db->set ('createdby', $userid); | ||||||
|  | 			$this->db->insert ('wiki_attachment'); | ||||||
|  | 		}	 | ||||||
|  |  | ||||||
|  |                 $this->db->set ('createdon', $now); | ||||||
| 		$this->db->set ('type',      'wiki'); | 		$this->db->set ('type',      'wiki'); | ||||||
| 		$this->db->set ('action',    'create'); | 		$this->db->set ('action',    'create'); | ||||||
| 		$this->db->set ('projectid', $wiki->projectid); | 		$this->db->set ('projectid', $wiki->projectid); | ||||||
| @ -54,22 +151,63 @@ class WikiModel extends Model | |||||||
| 		$this->db->set ('message',   $wiki->name); | 		$this->db->set ('message',   $wiki->name); | ||||||
|                 $this->db->insert ('log'); |                 $this->db->insert ('log'); | ||||||
|  |  | ||||||
| 		$this->db->trans_complete (); | 		if ($this->db->trans_status() === FALSE) | ||||||
|                 return $this->db->trans_status(); | 		{ | ||||||
|  | 			$this->db->trans_rollback (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$this->db->trans_commit (); | ||||||
|  | 		return TRUE; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	function update ($userid, $wiki) | 	function update ($userid, $wiki) | ||||||
| 	{ | 	{ | ||||||
| 		// TODO: check if userid can do this.. | 		// TODO: check if userid can do this.. | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_begin (); | ||||||
|  |  | ||||||
|  | 		$now = date('Y-m-d H:i:s'); | ||||||
|  |  | ||||||
| 		$this->db->where ('projectid', $wiki->projectid); | 		$this->db->where ('projectid', $wiki->projectid); | ||||||
| 		$this->db->where ('name', $wiki->name); | 		$this->db->where ('name', $wiki->name); | ||||||
| 		$this->db->set ('text', $wiki->text); | 		$this->db->set ('text', $wiki->text); | ||||||
| 		$this->db->set ('updatedon', date('Y-m-d H:i:s')); | 		$this->db->set ('updatedon', $now); | ||||||
| 		$this->db->set ('updatedby', $userid); | 		$this->db->set ('updatedby', $userid); | ||||||
| 		$this->db->update ('wiki'); | 		$this->db->update ('wiki'); | ||||||
|  |  | ||||||
|                 $this->db->set ('createdon', date('Y-m-d H:i:s')); | 		foreach ($wiki->delete_attachments as $att) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->where ('projectid', $wiki->projectid); | ||||||
|  | 			$this->db->where ('wikiname', $wiki->name); | ||||||
|  | 			$this->db->where ('name', $att->name); | ||||||
|  | 			$this->db->where ('encname', $att->encname); | ||||||
|  | 			$this->db->delete ('wiki_attachment'); | ||||||
|  |  | ||||||
|  | 			if ($this->db->trans_status() === FALSE) | ||||||
|  | 			{ | ||||||
|  | 				$this->db->trans_rollback (); | ||||||
|  | 				return FALSE; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if ($this->db->affected_rows() <= 0) | ||||||
|  | 			{ | ||||||
|  | 				$this->db->trans_rollback (); | ||||||
|  | 				return FALSE; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		foreach ($wiki->new_attachments as $att) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->set ('projectid', $wiki->projectid); | ||||||
|  | 			$this->db->set ('wikiname', $wiki->name); | ||||||
|  | 			$this->db->set ('name', $att['name']); | ||||||
|  | 			$this->db->set ('encname', $att['encname']); | ||||||
|  | 			$this->db->set ('createdon', $now); | ||||||
|  | 			$this->db->set ('createdby', $userid); | ||||||
|  | 			$this->db->insert ('wiki_attachment'); | ||||||
|  | 		}	 | ||||||
|  | 		 | ||||||
|  |                 $this->db->set ('createdon', $now); | ||||||
| 		$this->db->set ('type',      'wiki'); | 		$this->db->set ('type',      'wiki'); | ||||||
| 		$this->db->set ('action',    'update'); | 		$this->db->set ('action',    'update'); | ||||||
| 		$this->db->set ('projectid', $wiki->projectid); | 		$this->db->set ('projectid', $wiki->projectid); | ||||||
| @ -77,14 +215,25 @@ class WikiModel extends Model | |||||||
| 		$this->db->set ('message',   $wiki->name); | 		$this->db->set ('message',   $wiki->name); | ||||||
|                 $this->db->insert ('log'); |                 $this->db->insert ('log'); | ||||||
|  |  | ||||||
| 		$this->db->trans_complete (); | 		if ($this->db->trans_status() === FALSE) | ||||||
|                 return $this->db->trans_status(); | 		{ | ||||||
|  | 			$this->db->trans_rollback (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$this->db->trans_commit (); | ||||||
|  | 		return TRUE; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	function delete ($userid, $wiki) | 	function delete ($userid, $wiki) | ||||||
| 	{ | 	{ | ||||||
| 		// TODO: check if userid can do this.. | 		// TODO: check if userid can do this.. | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
|  | 		$this->db->where ('projectid', $wiki->projectid); | ||||||
|  | 		$this->db->where ('wikiname', $wiki->name); | ||||||
|  | 		$this->db->delete ('wiki_attachment'); | ||||||
|  |  | ||||||
| 		$this->db->where ('projectid', $wiki->projectid); | 		$this->db->where ('projectid', $wiki->projectid); | ||||||
| 		$this->db->where ('name', $wiki->name); | 		$this->db->where ('name', $wiki->name); | ||||||
| 		$this->db->delete ('wiki'); | 		$this->db->delete ('wiki'); | ||||||
|  | |||||||
| @ -10,9 +10,10 @@ | |||||||
| function render_wiki() | function render_wiki() | ||||||
| { | { | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"file_show_textpre",  | 		"file_show_mainarea_wiki_text",  | ||||||
| 		"file_show_textarea",  | 		"file_show_mainarea_wiki",  | ||||||
| 		"<?=site_url()?>/wiki/show/<?=$project->id?>/" | 		"<?=site_url()?>/wiki/show/<?=$project->id?>/", | ||||||
|  | 		"<?=site_url()?>/wiki/attachment0/<?=$project->id?>/" | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| @ -76,11 +77,11 @@ $this->load->view ( | |||||||
| <div class="mainarea" id="file_show_mainarea"> | <div class="mainarea" id="file_show_mainarea"> | ||||||
| <div class="title"><?=htmlspecialchars($file->name)?></div> | <div class="title"><?=htmlspecialchars($file->name)?></div> | ||||||
|  |  | ||||||
| <div id="file_show_textarea"> | <div id="file_show_mainarea_wiki"> | ||||||
| <pre id="file_show_textpre" style="visibility: hidden"> | <pre id="file_show_mainarea_wiki_text" style="visibility: hidden"> | ||||||
| <?php print htmlspecialchars($file->description); ?> | <?php print htmlspecialchars($file->description); ?> | ||||||
| </pre> | </pre> | ||||||
| </div> <!-- file_show_textarea --> | </div> <!-- file_show_mainarea_wiki --> | ||||||
|  |  | ||||||
| </div> <!-- file_show_mainarea --> | </div> <!-- file_show_mainarea --> | ||||||
|  |  | ||||||
|  | |||||||
| @ -109,6 +109,7 @@ $(function () { | |||||||
| 	$("#issue_show_mainarea_change_form_open").button().click ( | 	$("#issue_show_mainarea_change_form_open").button().click ( | ||||||
| 		function () {  | 		function () {  | ||||||
| 			$('#issue_show_mainarea_change_form').dialog('open');  | 			$('#issue_show_mainarea_change_form').dialog('open');  | ||||||
|  | 			return false; | ||||||
| 		} | 		} | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| @ -135,6 +136,7 @@ $(function () { | |||||||
| 	$("#issue_show_mainarea_undo_change").button().click ( | 	$("#issue_show_mainarea_undo_change").button().click ( | ||||||
| 		function () {  | 		function () {  | ||||||
| 			$('#issue_show_mainarea_undo_change_confirm').dialog('open');  | 			$('#issue_show_mainarea_undo_change_confirm').dialog('open');  | ||||||
|  | 			return false; | ||||||
| 		} | 		} | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| @ -234,17 +236,15 @@ $this->load->view ( | |||||||
| 	$msgfmt_changed_from_to = $this->lang->line ('ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'); | 	$msgfmt_changed_from_to = $this->lang->line ('ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'); | ||||||
| 	$msgfmt_changed_to = $this->lang->line ('ISSUE_MSG_CHANGED_X_TO_Z'); | 	$msgfmt_changed_to = $this->lang->line ('ISSUE_MSG_CHANGED_X_TO_Z'); | ||||||
| 	$count = count($issue->changes); | 	$count = count($issue->changes); | ||||||
| 	if ($count > 1)  |  | ||||||
| 	{ | 	print '<div class="infostrip">'; | ||||||
| 		print '<div class="infostrip">'; | 	print '<span class="title">'; | ||||||
| 		print '<span class="title">'; | 	print $this->lang->line('Change log'); | ||||||
| 		print $this->lang->line('Change log'); | 	print '</span>'; | ||||||
| 		print '</span>'; | 	print '<a id="issue_show_mainarea_undo_change" href="#">'; | ||||||
| 		print '<a id="issue_show_mainarea_undo_change" href="#">'; | 	print $this->lang->line('Undo'); | ||||||
| 		print $this->lang->line('Undo'); | 	print '</a>'; | ||||||
| 		print '</a>'; | 	print '</div>'; | ||||||
| 		print '</div>'; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	print '<table id="issue_show_mainarea_changes_table">'; | 	print '<table id="issue_show_mainarea_changes_table">'; | ||||||
| 	while ($count > 1) | 	while ($count > 1) | ||||||
| @ -252,7 +252,7 @@ $this->load->view ( | |||||||
| 		$new = $issue->changes[--$count]; | 		$new = $issue->changes[--$count]; | ||||||
| 		$old = $issue->changes[$count-1]; | 		$old = $issue->changes[$count-1]; | ||||||
|  |  | ||||||
| 		print "<tr>"; | 		print '<tr>'; | ||||||
| 		 | 		 | ||||||
| 		print '<td class="date">';  | 		print '<td class="date">';  | ||||||
| 		print '<span title="'; | 		print '<span title="'; | ||||||
| @ -336,6 +336,26 @@ $this->load->view ( | |||||||
| 		print '</td>'; | 		print '</td>'; | ||||||
| 		print '</tr>'; | 		print '</tr>'; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	print '<tr>'; | ||||||
|  | 	print '<td class="date">';  | ||||||
|  | 	print '<span title="'; | ||||||
|  | 	print date ('Y-m-d H:s:i', strtotime($issue->createdon)); | ||||||
|  | 	print '">'; | ||||||
|  | 	print date ('Y-m-d', strtotime($issue->updatedon)); | ||||||
|  | 	print '</span>'; | ||||||
|  | 	print '</td>'; | ||||||
|  |  | ||||||
|  | 	print '<td class="updater">';  | ||||||
|  | 	print htmlspecialchars($issue->createdby); | ||||||
|  | 	print '</td>'; | ||||||
|  |  | ||||||
|  | 	print '<td class="details">'; | ||||||
|  | 	print $this->lang->line('ISSUE_MSG_CREATED'); | ||||||
|  | 	print '</td>'; | ||||||
|  |  | ||||||
|  | 	print '</tr>'; | ||||||
|  |  | ||||||
| 	print '</table>'; | 	print '</table>'; | ||||||
| ?> | ?> | ||||||
|  |  | ||||||
| @ -437,12 +457,16 @@ $this->load->view ( | |||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
| function render_wiki() | function render_wiki() | ||||||
| { | { | ||||||
| 	<?php $creole_base = site_url() . "/wiki/show/{$project->id}/"; ?> | 	<?php  | ||||||
|  | 		$creole_base = site_url() . "/wiki/show/{$project->id}/";  | ||||||
|  | 		$creole_attachment_base = site_url() . "/wiki/attachment0/{$project->id}/";  | ||||||
|  | 	?> | ||||||
|  |  | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"issue_show_mainarea_description_pre",  | 		"issue_show_mainarea_description_pre",  | ||||||
| 		"issue_show_mainarea_description",  | 		"issue_show_mainarea_description",  | ||||||
| 		"<?=$creole_base?>" | 		"<?=$creole_base?>", | ||||||
|  | 		"<?=$creole_attachment_base?>" | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	<?php | 	<?php | ||||||
| @ -453,7 +477,8 @@ function render_wiki() | |||||||
| 			print "creole_render_wiki ( | 			print "creole_render_wiki ( | ||||||
| 				'issue_show_mainarea_changes_comment_pre_{$xxx}',  | 				'issue_show_mainarea_changes_comment_pre_{$xxx}',  | ||||||
| 				'issue_show_mainarea_changes_comment_{$xxx}',  | 				'issue_show_mainarea_changes_comment_{$xxx}',  | ||||||
| 				'{$creole_base}');"; | 				'{$creole_base}', | ||||||
|  | 				'{$creole_attachment_base}');"; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	?> | 	?> | ||||||
|  | |||||||
| @ -47,6 +47,7 @@ $(function () { | |||||||
| 	$("#project_catalog_mainarea_search_button").button().click ( | 	$("#project_catalog_mainarea_search_button").button().click ( | ||||||
| 		function () {  | 		function () {  | ||||||
| 			$('#project_catalog_mainarea_search_form').dialog('open');  | 			$('#project_catalog_mainarea_search_form').dialog('open');  | ||||||
|  | 			return false; | ||||||
| 		} | 		} | ||||||
| 	); | 	); | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -10,9 +10,10 @@ | |||||||
| function render_wiki()  | function render_wiki()  | ||||||
| { | { | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"project_home_textpre",  | 		"project_home_mainarea_wiki_text",  | ||||||
| 		"project_home_textarea",  | 		"project_home_mainarea_wiki",  | ||||||
| 		"<?=site_url()?>/wiki/show/<?=$project->id?>/" | 		"<?=site_url()?>/wiki/show/<?=$project->id?>/", | ||||||
|  | 		"<?=site_url()?>/wiki/attachment0/<?=$project->id?>/" | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| @ -209,11 +210,11 @@ $this->load->view ( | |||||||
| <?=htmlspecialchars($project->name)?> | <?=htmlspecialchars($project->name)?> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div id="project_home_textarea"> | <div id="project_home_mainarea_wiki"> | ||||||
| <pre id="project_home_textpre" style="visibility: hidden"> | <pre id="project_home_mainarea_wiki_text" style="visibility: hidden"> | ||||||
| <?php print htmlspecialchars($project->description); ?> | <?php print htmlspecialchars($project->description); ?> | ||||||
| </pre> | </pre> | ||||||
| </div> <!-- project_home_textarea --> | </div> <!-- project_home_mainarea_wiki --> | ||||||
|  |  | ||||||
| </div> <!-- project_home_mainarea --> | </div> <!-- project_home_mainarea --> | ||||||
|  |  | ||||||
|  | |||||||
| @ -9,9 +9,10 @@ | |||||||
| function render_wiki() | function render_wiki() | ||||||
| { | { | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"site_home_mainarea_textpre", | 		"site_home_mainarea_wiki_text", | ||||||
| 		"site_home_mainarea_text", | 		"site_home_mainarea_wiki", | ||||||
| 		"<?=site_url()?>/site/wiki/" | 		"<?=site_url()?>/site/wiki/", | ||||||
|  | 		"<?=site_url()?>/site/image/" | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| @ -204,8 +205,8 @@ foreach ($latest_projects as $project) | |||||||
|  |  | ||||||
| </div> <!-- site_home_mainarea_sidebar --> | </div> <!-- site_home_mainarea_sidebar --> | ||||||
|  |  | ||||||
| <div id="site_home_mainarea_text"> | <div id="site_home_mainarea_wiki"> | ||||||
| <pre id="site_home_mainarea_textpre" style="visibility: hidden"> | <pre id="site_home_mainarea_wiki_text" style="visibility: hidden"> | ||||||
| <?php print htmlspecialchars($site->text); ?> | <?php print htmlspecialchars($site->text); ?> | ||||||
| </pre> | </pre> | ||||||
| </div> <!-- site_home_mainarea_text --> | </div> <!-- site_home_mainarea_text --> | ||||||
|  | |||||||
| @ -9,9 +9,10 @@ | |||||||
| function render_wiki() | function render_wiki() | ||||||
| { | { | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"site_show_mainarea_textpre", | 		"site_show_mainarea_wiki_text", | ||||||
| 		"site_show_mainarea_text", | 		"site_show_mainarea_wiki", | ||||||
| 		"<?=site_url()?>/site/wiki/" | 		"<?=site_url()?>/site/wiki/", | ||||||
|  | 		"<?=site_url()?>/site/image/" | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| @ -67,8 +68,8 @@ $this->load->view ( | |||||||
| <?=htmlspecialchars($site->name)?> (<?=htmlspecialchars($site->id)?>) | <?=htmlspecialchars($site->name)?> (<?=htmlspecialchars($site->id)?>) | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div id="site_show_mainarea_text"> | <div id="site_show_mainarea_wiki"> | ||||||
| <pre id="site_show_mainarea_textpre" style="visibility: hidden"> | <pre id="site_show_mainarea_wiki_text" style="visibility: hidden"> | ||||||
| <?php print htmlspecialchars($site->text); ?> | <?php print htmlspecialchars($site->text); ?> | ||||||
| </pre> | </pre> | ||||||
| </div> <!-- site_show_mainarea_text --> | </div> <!-- site_show_mainarea_text --> | ||||||
|  | |||||||
| @ -4,6 +4,28 @@ | |||||||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||||||
| <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/common.css" /> | <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/common.css" /> | ||||||
| <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/wiki.css" /> | <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/wiki.css" /> | ||||||
|  |  | ||||||
|  | <script type="text/javascript" src="<?=base_url()?>/js/jquery.min.js"></script> | ||||||
|  | <script type="text/javascript" src="<?=base_url()?>/js/jquery-ui.min.js"></script> | ||||||
|  | <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/jquery-ui.css" /> | ||||||
|  |  | ||||||
|  | <script type="text/javascript"> | ||||||
|  | var new_attachment_no = 0; | ||||||
|  | $(function () { | ||||||
|  | 	$('#wiki_edit_more_new_attachment').button().click ( | ||||||
|  | 		function () { | ||||||
|  | 			var html = [ | ||||||
|  | 				'<li><input type="file" name="wiki_new_attachment_', | ||||||
|  | 				++new_attachment_no, | ||||||
|  | 				'" /></li>' | ||||||
|  | 			].join(""); | ||||||
|  | 			$('#wiki_edit_new_attachment_list').append (html); | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 	); | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  |  | ||||||
| <title><?=htmlspecialchars($wiki->name)?></title> | <title><?=htmlspecialchars($wiki->name)?></title> | ||||||
| </head> | </head> | ||||||
|  |  | ||||||
| @ -40,7 +62,7 @@ $this->load->view ( | |||||||
|  |  | ||||||
| <?php if ($message != "") print '<div id="wiki_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?> | <?php if ($message != "") print '<div id="wiki_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?> | ||||||
|  |  | ||||||
| <?=form_open("wiki/{$mode}/{$project->id}/".$this->converter->AsciiToHex($wiki->name))?> | <?=form_open_multipart("wiki/{$mode}/{$project->id}/".$this->converter->AsciiToHex($wiki->name))?> | ||||||
| 	<?=form_fieldset()?> | 	<?=form_fieldset()?> | ||||||
| 		<div> | 		<div> | ||||||
| 			<div> | 			<div> | ||||||
| @ -75,6 +97,52 @@ $this->load->view ( | |||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
|  |  | ||||||
|  | 		<?php if (!empty($wiki->attachments)): ?> | ||||||
|  | 		<div> | ||||||
|  | 			<div> | ||||||
|  | 				<?=form_label($this->lang->line('WIKI_ATTACHMENTS').': ', 'wiki_edit_attachment_list')?>  | ||||||
|  | 				<?=form_error('wiki_attachment_list');?> | ||||||
|  | 			</div> | ||||||
|  |  | ||||||
|  | 			<ul id='wiki_edit_attachment_list'> | ||||||
|  | 			<?php | ||||||
|  | 				foreach ($wiki->attachments as $att) | ||||||
|  | 				{ | ||||||
|  | 					$hexattname =  | ||||||
|  | 						$this->converter->AsciiToHex($att->name) .  | ||||||
|  | 						'@' . | ||||||
|  | 						$this->converter->AsciiToHex($att->encname); | ||||||
|  | 					$escattname = htmlspecialchars($att->name); | ||||||
|  |  | ||||||
|  | 					print '<li>'; | ||||||
|  | 					print "<input type='checkbox' name='wiki_delete_attachment[]' value='{$hexattname}' title='Check to delete {$escattname}'/>"; | ||||||
|  | 					print $escattname; | ||||||
|  | 					print '</li>'; | ||||||
|  | 				} | ||||||
|  | 			?> | ||||||
|  | 			</ul> | ||||||
|  |  | ||||||
|  | 		</div> | ||||||
|  | 		<?php endif; ?> | ||||||
|  |  | ||||||
|  | 		<div> | ||||||
|  | 			<div> | ||||||
|  | 				<?=form_label($this->lang->line('WIKI_NEW_ATTACHMENTS').': ', 'wiki_edit_new_attachment_list')?>  | ||||||
|  | 				<a href='#' id='wiki_edit_more_new_attachment'> | ||||||
|  | 					<?=$this->lang->line('WIKI_MORE_NEW_ATTACHMENTS')?> | ||||||
|  | 				</a> | ||||||
|  | 				<?=form_error('wiki_edit_new_attachment_list');?> | ||||||
|  | 			</div> | ||||||
|  |  | ||||||
|  | 			<ul id='wiki_edit_new_attachment_list'> | ||||||
|  | 			<li>	 | ||||||
|  | 				<input type='file' name='wiki_new_attachment_0' /> | ||||||
|  | 				<!--<input type='checkbox' name='wiki_delete_attachment[]' value='delete'/>Delete--> | ||||||
|  | 			</li> | ||||||
|  | 			</ul> | ||||||
|  |  | ||||||
|  | 		</div> | ||||||
|  | 		 | ||||||
| 		<div> | 		<div> | ||||||
| 			<?=form_hidden('wiki_projectid', set_value('wiki_projectid', $wiki->projectid))?> | 			<?=form_hidden('wiki_projectid', set_value('wiki_projectid', $wiki->projectid))?> | ||||||
| 		</div> | 		</div> | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ $this->load->view ( | |||||||
| <?php | <?php | ||||||
| if (empty($wikis)) | if (empty($wikis)) | ||||||
| { | { | ||||||
| 	print $this->lang->line('MSG_NO_WIKIS_AVAIL'); | 	print $this->lang->line('WIKI_MSG_NO_PAGES_AVAILABLE'); | ||||||
| } | } | ||||||
| else | else | ||||||
| { | { | ||||||
|  | |||||||
| @ -8,14 +8,19 @@ | |||||||
| <title><?=htmlspecialchars($wiki->name)?></title> | <title><?=htmlspecialchars($wiki->name)?></title> | ||||||
| </head> | </head> | ||||||
|  |  | ||||||
|  | <?php | ||||||
|  | $hexname = $this->converter->AsciiToHex ($wiki->name); | ||||||
|  | ?> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
| function render_wiki() | function render_wiki() | ||||||
| { | { | ||||||
|  |  | ||||||
| 	creole_render_wiki ( | 	creole_render_wiki ( | ||||||
| 		"wiki_show_textpre",  | 		"wiki_show_mainarea_wiki_text",  | ||||||
| 		"wiki_show_textarea",  | 		"wiki_show_mainarea_wiki",  | ||||||
| 		"<?=site_url()?>/wiki/show/<?=$project->id?>/" | 		"<?=site_url()?>/wiki/show/<?=$project->id?>/", | ||||||
|  | 		"<?=site_url()?>/wiki/attachment/<?=$project->id?>/<?=$hexname?>/" | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| @ -31,7 +36,6 @@ function render_wiki() | |||||||
| <!----------------------------------------------------------------------------> | <!----------------------------------------------------------------------------> | ||||||
|  |  | ||||||
| <?php | <?php | ||||||
| $hexname = $this->converter->AsciiToHex ($wiki->name); |  | ||||||
| $this->load->view ( | $this->load->view ( | ||||||
| 	'projectbar', | 	'projectbar', | ||||||
| 	array ( | 	array ( | ||||||
| @ -62,16 +66,37 @@ $this->load->view ( | |||||||
| <li><?=$this->lang->line('Last updated by')?> <?= $wiki->updatedby ?></li> | <li><?=$this->lang->line('Last updated by')?> <?= $wiki->updatedby ?></li> | ||||||
| </ul> | </ul> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | <?php if (!empty($wiki->attachments)): ?> | ||||||
|  | 	<div class="box"> | ||||||
|  | 		<div class="boxtitle"><?= $this->lang->line('WIKI_ATTACHMENTS') ?></div> | ||||||
|  | 		<ul> | ||||||
|  | 		<?php | ||||||
|  | 			foreach ($wiki->attachments as $att) | ||||||
|  | 			{ | ||||||
|  | 				$hexattname = $this->converter->AsciiToHex ($att->name); | ||||||
|  | 				print '<li>'; | ||||||
|  | 				print anchor ( | ||||||
|  | 					"wiki/attachment/{$project->id}/{$hexname}/{$hexattname}",  | ||||||
|  | 					htmlspecialchars($att->name) | ||||||
|  | 				); | ||||||
|  | 				print '</li>'; | ||||||
|  | 			} | ||||||
|  | 		?> | ||||||
|  | 		</ul> | ||||||
|  | 	</div> | ||||||
|  | <?php endif; ?> | ||||||
|  |  | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div class="mainarea" id="wiki_show_mainarea"> | <div class="mainarea" id="wiki_show_mainarea"> | ||||||
| <div class="title"><?=htmlspecialchars($wiki->name)?></div> | <div class="title"><?=htmlspecialchars($wiki->name)?></div> | ||||||
|  |  | ||||||
| <div id="wiki_show_textarea"> | <div id="wiki_show_mainarea_wiki"> | ||||||
| <pre id="wiki_show_textpre" style="visibility: hidden"> | <pre id="wiki_show_mainarea_wiki_text" style="visibility: hidden"> | ||||||
| <?php print htmlspecialchars($wiki->text); ?> | <?php print htmlspecialchars($wiki->text); ?> | ||||||
| </pre> | </pre> | ||||||
| </div> <!-- wiki_show_textarea --> | </div> <!-- wiki_show_mainarea_wiki --> | ||||||
|  |  | ||||||
| </div> <!-- wiki_show_mainarea --> | </div> <!-- wiki_show_mainarea --> | ||||||
|  |  | ||||||
|  | |||||||
| @ -47,8 +47,7 @@ function load_ini ($file) | |||||||
| 		array ('auth_mysql_name',              'string',     ''), | 		array ('auth_mysql_name',              'string',     ''), | ||||||
| 		array ('auth_mysql_prefix',            'string',     ''), | 		array ('auth_mysql_prefix',            'string',     ''), | ||||||
|  |  | ||||||
| 		array ('ldap_server_host',             'string',     '127.0.0.1'), | 		array ('ldap_server_uri',              'string',     'ldap://127.0.0.1:389'), | ||||||
| 		array ('ldap_server_port',             'integer',    389), |  | ||||||
| 		array ('ldap_server_protocol_version', 'integer',    3), | 		array ('ldap_server_protocol_version', 'integer',    3), | ||||||
| 		array ('ldap_userid_format',           'string',     '${userid}'), | 		array ('ldap_userid_format',           'string',     '${userid}'), | ||||||
| 		array ('ldap_password_format',         'string',     '${password}'), | 		array ('ldap_password_format',         'string',     '${password}'), | ||||||
| @ -58,6 +57,7 @@ function load_ini ($file) | |||||||
|  |  | ||||||
| 		array ('svnrepo_dir',                  'string',      CODEPOT_DEPOT_DIR.'/svnrepo'), | 		array ('svnrepo_dir',                  'string',      CODEPOT_DEPOT_DIR.'/svnrepo'), | ||||||
| 		array ('file_dir',                     'string',      CODEPOT_DEPOT_DIR.'/files'), | 		array ('file_dir',                     'string',      CODEPOT_DEPOT_DIR.'/files'), | ||||||
|  | 		array ('attachment_dir',               'string',      CODEPOT_DEPOT_DIR.'/attachments'), | ||||||
|  |  | ||||||
| 		array ('log_threshold',                'integer',     0), | 		array ('log_threshold',                'integer',     0), | ||||||
|  |  | ||||||
|  | |||||||
| @ -284,6 +284,11 @@ body { | |||||||
|  |  | ||||||
| .content .mainarea p.wiki { | .content .mainarea p.wiki { | ||||||
| 	/* use the default for normal cases */ | 	/* use the default for normal cases */ | ||||||
|  | 	overflow: auto; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .content .mainarea p.wiki img { | ||||||
|  | 	max-width: 100%; | ||||||
| } | } | ||||||
|  |  | ||||||
| .content .mainarea table p.wiki { | .content .mainarea table p.wiki { | ||||||
|  | |||||||
| @ -10,3 +10,4 @@ | |||||||
| 	white-space: nowrap; | 	white-space: nowrap; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -156,6 +156,7 @@ | |||||||
| 	padding-top: 0.2em; | 	padding-top: 0.2em; | ||||||
| 	padding-bottom: 0.2em; | 	padding-bottom: 0.2em; | ||||||
| 	border-bottom: 1px solid lightgray; | 	border-bottom: 1px solid lightgray; | ||||||
|  | 	overflow: auto; | ||||||
| } | } | ||||||
|  |  | ||||||
| #issue_show_mainarea_changes_table td.details .list { | #issue_show_mainarea_changes_table td.details .list { | ||||||
|  | |||||||
| @ -44,9 +44,21 @@ | |||||||
| 	white-space: pre-wrap; | 	white-space: pre-wrap; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /*-----------------------------------------------  | ||||||
|  |  * site show view  | ||||||
|  |  *-----------------------------------------------*/ | ||||||
|  | #site_show_mainarea_text p.wiki { | ||||||
|  | 	overflow: auto; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #site_show_mainarea_text img { | ||||||
|  | 	max-width: 100%; | ||||||
|  | } | ||||||
|  |  | ||||||
| /*-----------------------------------------------  | /*-----------------------------------------------  | ||||||
|  * site edit view  |  * site edit view  | ||||||
|  *-----------------------------------------------*/ |  *-----------------------------------------------*/ | ||||||
| #site_edit_form .text { | #site_edit_form .text { | ||||||
| 	width: 100%; | 	width: 100%; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -5,3 +5,4 @@ | |||||||
| #wiki_edit_mainarea_text { | #wiki_edit_mainarea_text { | ||||||
| 	width: 100%; | 	width: 100%; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -342,7 +342,19 @@ var Url = { | |||||||
|         img: { regex: rx.img, |         img: { regex: rx.img, | ||||||
|             build: function(node, r, options) { |             build: function(node, r, options) { | ||||||
|                 var img = document.createElement('img'); |                 var img = document.createElement('img'); | ||||||
|                 img.src = r[1]; |  | ||||||
|  |                 if (r[1].match(rx.uriPrefix)) | ||||||
|  | 		{ | ||||||
|  |                 	img.src = r[1]; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			var tmp = r[1].replace(/~(.)/g, '$1'); | ||||||
|  | 			tmp = Url.encode (tmp); | ||||||
|  | 			img.src = options && options.imgFormat?  | ||||||
|  | 				formatLink (tmp, options.imgFormat): tmp; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|                 img.alt = r[2] === undefined |                 img.alt = r[2] === undefined | ||||||
|                     ? (options && options.defaultImageText ? options.defaultImageText : '') |                     ? (options && options.defaultImageText ? options.defaultImageText : '') | ||||||
|                     : r[2].replace(/~(.)/g, '$1'); |                     : r[2].replace(/~(.)/g, '$1'); | ||||||
| @ -474,7 +486,7 @@ Parse.Simple.Creole.prototype = new Parse.Simple.Base(); | |||||||
|  |  | ||||||
| Parse.Simple.Creole.prototype.constructor = Parse.Simple.Creole; | Parse.Simple.Creole.prototype.constructor = Parse.Simple.Creole; | ||||||
|  |  | ||||||
| function creole_render_wiki (inputid, outputid, linkbase) | function creole_render_wiki (inputid, outputid, linkbase, imgbase) | ||||||
| { | { | ||||||
|         function $(id) { return document.getElementById(id); } |         function $(id) { return document.getElementById(id); } | ||||||
|  |  | ||||||
| @ -495,7 +507,8 @@ function creole_render_wiki (inputid, outputid, linkbase) | |||||||
|                         WikiCreole: 'http://www.wikicreole.org/wiki/', |                         WikiCreole: 'http://www.wikicreole.org/wiki/', | ||||||
|                         Wikipedia: 'http://en.wikipedia.org/wiki/' |                         Wikipedia: 'http://en.wikipedia.org/wiki/' | ||||||
|                 },*/ |                 },*/ | ||||||
|                 linkFormat: linkbase |                 linkFormat: linkbase, | ||||||
|  | 		imgFormat: imgbase | ||||||
|         } ); |         } ); | ||||||
|  |  | ||||||
|         var xinput = decodeEntities(input.innerHTML); |         var xinput = decodeEntities(input.innerHTML); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user