3 * GForge Doc Mgr Facility
5 * Copyright 2002 GForge, LLC
15 by Quentin Cregan, SourceForge 06/2000
17 Complete OO rewrite by Tim Perdue 1/2003
21 Ftp upload option is commented-out
25 require_once('../../env.inc.php');
26 require_once('pre.php');
27 require_once('www/docman/include/doc_utils.php');
28 require_once('www/docman/include/DocumentGroupHTML.class');
29 require_once('common/docman/DocumentFactory.class');
30 require_once('common/docman/DocumentGroup.class');
31 require_once('common/docman/DocumentGroupFactory.class');
32 require_once('common/include/TextSanitizer.class'); // to make the HTML input by the user safe to store
34 $group_id = getIntFromRequest('group_id');
39 $g =& group_get_object($group_id);
40 if (!$g || !is_object($g) || $g->isError()) {
44 $perm =& $g->getPermission( session_get_user() );
45 if (!$perm || $perm->isError() || !$perm->isDocEditor()) {
46 exit_permission_denied();
49 $editdoc = getStringFromRequest('editdoc');
50 $docid = getIntFromRequest('docid');
52 $upload_dir = $sys_ftp_upload_dir . "/" . $g->getUnixName();
56 // Submit the changes to the database
60 if (getStringFromRequest('submit')) {
62 $doc_group = getStringFromRequest('doc_group');
63 $title = getStringFromRequest('title');
64 $description = getStringFromRequest('description');
65 $language_id = getIntFromRequest('language_id');
66 $data = getStringFromRequest('data');
67 $file_url = getStringFromRequest('file_url');
68 //$ftp_filename = getStringFromRequest('ftp_filename');
69 $uploaded_data = getUploadedFile('uploaded_data');
70 $stateid = getIntFromRequest('stateid');
71 $filetype = getStringFromRequest('filetype');
72 $editor = getStringFromRequest('editor');
74 $d= new Document($g,$docid);
76 exit_error(_('Error'),$d->getErrorMessage());
79 $sanitizer = new TextSanitizer();
80 $data = $sanitizer->SanitizeHtml($data);
81 if (($editor) && ($d->getFileData()!=$data) && (!$uploaded_data['name'])) {
82 $filename = $d->getFileName();
84 $filetype = $d->getFileType();
86 } elseif ($uploaded_data['name']) {
87 if (!is_uploaded_file($uploaded_data['tmp_name'])) {
88 exit_error(_('Error'),sprintf(_('Error'), $uploaded_data['name']));
90 $data = addslashes(fread(fopen($uploaded_data['tmp_name'], 'r'), $uploaded_data['size']));
91 $filename=$uploaded_data['name'];
92 $filetype=$uploaded_data['type'];
93 } elseif ($file_url) {
98 } elseif ($sys_use_ftpuploads && $ftp_filename!=100) { //100==None
99 $filename=$upload_dir.'/'.$ftp_filename;
100 $data = addslashes(fread(fopen($filename, 'r'), filesize($filename)));
101 $filetype=$uploaded_data_type;
104 $filename=addslashes($d->getFileName());
105 $filetype=addslashes($d->getFileType());
107 if (!$d->update($filename,$filetype,$data,$doc_group,$title,$language_id,$description,$stateid)) {
108 exit_error('Error',$d->getErrorMessage());
110 $feedback = _('Updated successfully');
112 } elseif (getStringFromRequest('editgroup')) {
113 $doc_group = getStringFromRequest('doc_group');
114 $groupname = getIntFromRequest('groupname');
115 $parent_doc_group = getIntFromRequest('parent_doc_group');
117 $dg = new DocumentGroup($g,$doc_group);
118 if ($dg->isError()) {
119 exit_error('Error',$dg->getErrorMessage());
121 if (!$dg->update($groupname,$parent_doc_group)) {
122 exit_error('Error',$dg->getErrorMessage());
124 $feedback = _('Updated successfully');
127 } elseif (getStringFromRequest('addgroup')) {
128 $groupname = getStringFromRequest('groupname');
129 $parent_doc_group = getIntFromRequest('parent_doc_group');
131 $dg = new DocumentGroup($g);
132 if ($dg->isError()) {
133 exit_error('Error',$dg->getErrorMessage());
135 if (!$dg->create($groupname, $parent_doc_group)) {
136 exit_error('Error',$dg->getErrorMessage());
138 $feedback = _('Created successfully');
140 } elseif (getStringFromRequest('deletedoc') && $docid && getStringFromRequest('sure') && getStringFromRequest('really_sure')) {
141 $d= new Document($g,$docid);
143 exit_error('Error',$d->getErrorMessage());
147 exit_error('Error',$d->getErrorMessage());
150 $feedback = _('Deleted');
151 header('Location: index.php?group_id='.$d->Group->getID().'&feedback='.urlencode($feedback));
152 die(); // End parsing file and redirect
159 // Edit a specific document
162 if ($editdoc && $docid) {
164 $d= new Document($g,$docid);
166 exit_error('Error',$d->getErrorMessage());
169 $dgf = new DocumentGroupFactory($g);
170 if ($dgf->isError()) {
171 exit_error('Error',$dgf->getErrorMessage());
174 $dgh = new DocumentGroupHTML($g);
175 if ($dgh->isError()) {
176 exit_error('Error',$dgh->getErrorMessage());
180 docman_header(_('Document Manager Administration'),_('Document Manager Administration'),'');
184 <?php echo _('<strong>Document Title</strong>: Refers to the relatively brief title of the document (e.g. How to use the download server)<br /><strong>Description:</strong> A brief description to be placed just under the title.') ?>
185 <form name="editdata" action="index.php?editdoc=1&group_id=<?php echo $group_id; ?>" method="post" enctype="multipart/form-data">
191 <strong><?php echo _('Document Title') ?>: </strong><?php echo utils_requiredField(); ?> <?php printf(_('Document Title'), 5) ?><br />
192 <input type="text" name="title" size="40" maxlength="255" value="<?php echo $d->getName(); ?>" />
198 <strong><?php echo _('Description') ?></strong><?php echo utils_requiredField(); ?> <?php printf(_('Description'), 10) ?><br />
199 <input type="text" name="description" size="20" maxlength="255" value="<?php echo $d->getDescription(); ?>" />
205 <strong><?php echo _('File')?></strong><?php echo utils_requiredField(); ?><br />
206 <?php if ($d->isURL()) {
207 echo '<a href="'.$d->getFileName().'">[View File URL]</a>';
209 <a target="_blank" href="../view.php/<?php echo $group_id.'/'.$d->getID().'/'.$d->getFileName() ?>"><?php echo $d->getName(); ?></a>
216 if ((!$d->isURL()) && ($d->isText())) {
220 //echo '<input type="hidden" name="editor" value="editor">';
221 echo _('Edit the contents to your desire or leave them as they are to remain unmodified.');
223 $params['name'] = 'data';
224 $params['width'] = "800";
225 $params['height'] = "500";
226 $params['group'] = $group_id;
227 $params['body'] = $d->getFileData();
229 // we are displaying with textarea if the document is not html (fckeditor pre-parses the files as html and validates it/changes it)
230 plugin_hook("text_editor",$params);
232 if (!$GLOBALS['editor_was_set_up']) {
234 //if we don´t have any plugin for text editor, display a simple textarea edit box
235 echo '<textarea name="data" rows="15" cols="100" wrap="soft">'. $d->getFileData() .'</textarea><br />';
236 echo '<input type="hidden" name="filetype" value="text/plain">';
239 echo '<input type="hidden" name="filetype" value="text/html">'; // the fckeditor creates html docs. this is for filetype
241 unset($GLOBALS['editor_was_set_up']);
251 <strong><?php echo _('Language') ?></strong><br />
254 echo html_get_language_popup($Language,'language_id',$d->getLanguageID());
261 <strong><?php echo _('Group that document belongs in') ?></strong><br />
264 //echo display_groups_option($group_id,$d->getDocGroupID());
265 $dgh->showSelectNestedGroups($dgf->getNested(), 'doc_group', false, $d->getDocGroupID());
272 <br /><strong><?php echo _('State') ?>:</strong><br />
275 doc_get_state_box($d->getStateID());
283 // if this is a text/html doc, display an edit box
284 if (strstr($d->getFileType(),'ext')) {
289 <strong>'._('Document Contents').'</strong><br />
290 <textarea cols="80" rows="20" name="data">'. htmlspecialchars( $d->getFileData() ).'</textarea>
298 <?php if ($d->isURL()) { ?>
299 <strong><?php echo _('Specify an outside URL where the file will be referenced') ?> :</strong><?php echo utils_requiredField(); ?><br />
300 <input type="text" name="file_url" size="50" value="<?php echo $d->getFileName() ?>" />
302 <strong><?php echo _('OPTIONAL: Upload new file') ?></strong><br />
303 <input type="file" name="uploaded_data" size="30" /><br/><br />
304 <?php //if ($sys_use_ftpuploads) { ?>
305 <!--<strong><?php //printf(_('OR choose one form FTP %1$s'), $sys_ftp_upload_host) ?></strong>--><br />
307 //$ftp_files_arr=array_merge($arr,ls($upload_dir,true));
308 //echo html_build_select_box_from_arrays($ftp_files_arr,$ftp_files_arr,'ftp_filename','');
309 //echo '<br /><br />';
317 <input type="hidden" name="docid" value="<?php echo $d->getID(); ?>" />
318 <input type="submit" value="<?php echo _('Submit Edit') ?>" name="submit" /><br /><br />
319 <a href="index.php?deletedoc=1&docid=<?php echo $d->getID() ?>&group_id=<?php echo $d->Group->getID() ?>"><?php echo _('Permanently delete this document') ?></a>
324 docman_footer(array());
328 // Add a document group / view existing groups list
331 } elseif (getStringFromRequest('addgroup')) {
333 docman_header(_('Document Manager Administration'),_('Document Manager Administration'),'');
335 echo "<h1>"._('Add Document Groups')."</h1>";
337 $dgf = new DocumentGroupFactory($g);
338 if ($dgf->isError()) {
339 exit_error('Error',$dgf->getErrorMessage());
342 $dgh = new DocumentGroupHTML($g);
343 if ($dgh->isError()) {
344 exit_error('Error',$dgh->getErrorMessage());
347 $nested_groups =& $dgf->getNested();
349 if (count($nested_groups) > 0) {
351 $title_arr[]=_('ID');
352 $title_arr[]=_('Group Name');
354 echo $GLOBALS['HTML']->listTableTop ($title_arr);
357 $dgh->showTableNestedGroups($nested_groups, $row);
359 echo $GLOBALS['HTML']->listTableBottom();
362 echo "\n<h1>"._('No Document Groups defined')."</h1>";
365 <p><strong><?php echo _('Add a group') ?>:</strong></p>
366 <form name="addgroup" action="index.php?addgroup=1&group_id=<?php echo $group_id; ?>" method="post">
369 <th><?php echo _('New Group Name') ?>:</th>
370 <td><input type="text" name="groupname" /></td>
374 <th><?php echo _('Belongs to') ?>:</th>
376 <?php echo $dgh->showSelectNestedGroups($nested_groups, 'parent_doc_group') ?>
379 <td><input type="submit" value="<?php echo _('Add') ?>" name="submit" /></td>
383 <?php echo _('Group name will be used as a title, so it should be formatted correspondingly.') ?>
388 docman_footer(array());
392 // Edit a specific doc group
395 } elseif (getStringFromRequest('editgroup') && getStringFromRequest('doc_group')) {
396 $doc_group = getStringFromRequest('doc_group');
398 $dg = new DocumentGroup($g,$doc_group);
399 if ($dg->isError()) {
400 exit_error('Error',$dg->getErrorMessage());
403 $dgf = new DocumentGroupFactory($g);
404 if ($dgf->isError()) {
405 exit_error('Error',$dgf->getErrorMessage());
408 $dgh = new DocumentGroupHTML($g);
409 if ($dgh->isError()) {
410 exit_error('Error',$dgh->getErrorMessage());
413 docman_header(_('Document Manager Administration'),_('Document Manager Administration'),'');
415 <p><strong><?php echo _('Edit a group') ?></strong></p>
416 <form name="editgroup" action="index.php?editgroup=1&group_id=<?php echo $group_id; ?>" method="post">
417 <input type="hidden" name="doc_group" value="<?php echo $doc_group; ?>" />
420 <th><?php echo _('Group Name') ?>:</th>
421 <td><input type="text" name="groupname" value="<?php echo $dg->getName(); ?>" /></td>
425 <th><?php echo _('Belongs to') ?>:</th>
428 $dgh->showSelectNestedGroups($dgf->getNested(), "parent_doc_group", true, $dg->getParentId(), array($dg->getID()));
431 <td><input type="submit" value="<?php echo _('Edit') ?>" name="submit" /></td>
435 <?php echo _('Group name will be used as a title, so it should be formatted correspondingly.') ?>
440 docman_footer(array());
441 } else if (getStringFromRequest('deletedoc') && $docid) {
442 $d= new Document($g,$docid);
444 exit_error('Error',$d->getErrorMessage());
447 docman_header(_('Document Manager Administration'),_('Document Manager Administration'),'');
450 <form action="<?php echo $PHP_SELF.'?deletedoc=1&docid='.$d->getID().'&group_id='.$d->Group->getID() ?>" method="post">
451 <input type="hidden" name="submit" value="1" /><br />
452 <?php echo _('You are about to permanently delete this document.'); ?>
454 <input type="checkbox" name="sure" value="1"><?php echo _('I\'m Sure.') ?><br />
455 <input type="checkbox" name="really_sure" value="1"><?php echo _('I\'m Really Sure.') ?><br />
457 <input type="submit" name="post_changes" value="<?php echo _('Delete') ?>" /></p>
460 docman_footer(array());
464 // Display the main admin page
469 $df = new DocumentFactory($g);
470 if ($df->isError()) {
471 exit_error(_('Error'),$df->getErrorMessage());
474 $dgf = new DocumentGroupFactory($g);
475 if ($dgf->isError()) {
476 exit_error(_('Error'),$dgf->getErrorMessage());
480 $df->setStateID('ALL');
481 // $df->setSort('stateid');
482 $d_arr =& $df->getDocuments();
484 docman_header($Language->getText('docman_admin','section', $g->getPublicName()),_('Document Manager: Administration'),'admin');
487 <h3><?php echo _('Document Manager: Administration') ?></h3>
489 <a href="index.php?group_id=<?php echo $group_id; ?>&addgroup=1"><?php echo _('Add/Edit Document Groups') ?></a>
493 $selected_stateid = getIntFromRequest('selected_stateid');
494 if (!$d_arr || count($d_arr) < 1) {
495 print "<p><strong>"._('This project has no visible documents').".</strong></p>";
497 // get a list of used document states
498 $states = $df->getUsedStates();
499 $nested_groups =& $dgf->getNested();
501 foreach ($states as $state) {
502 echo "<li><strong>".$state["name"]."</strong>";
503 docman_display_documents($nested_groups, $df, true, $state['stateid'], true);
509 docman_footer(array());