Move the orig_file_ext field from resource to resourcerev where
it actually belongs. Add an option to download a specific resource revision as attachment in the view. Fix a bug that occurred when displaying an old revision of a resource. Prepare for proper deletion of the original file and the connected resource in case a revision is deleted; mark any previous revision as head in this case. Left-align the summary label in the resource list view.
This commit is contained in:
		@@ -95,7 +95,7 @@ class IDF_Views_Wiki
 | 
			
		||||
        $pag->action = array('IDF_Views_Wiki::listResources', array($prj->shortname));
 | 
			
		||||
        $pag->edit_action = array('IDF_Views_Wiki::viewResource', 'shortname', 'title');
 | 
			
		||||
        $pag->forced_where = new Pluf_SQL('project=%s', array($prj->id));
 | 
			
		||||
        $pag->extra_classes = array('right', 'a-c', 'a-c', 'a-c');
 | 
			
		||||
        $pag->extra_classes = array('right', 'a-c', 'left', 'a-c');
 | 
			
		||||
        $list_display = array(
 | 
			
		||||
            'title' => __('Resource Title'),
 | 
			
		||||
            'mime_type' => __('MIME type'),
 | 
			
		||||
@@ -347,7 +347,7 @@ class IDF_Views_Wiki
 | 
			
		||||
        if (isset($request->GET['rev']) and preg_match('/^[0-9]+$/', $request->GET['rev'])) {
 | 
			
		||||
            $revision = Pluf_Shortcuts_GetObjectOr404('IDF_Wiki_ResourceRevision',
 | 
			
		||||
                                                      $request->GET['rev']);
 | 
			
		||||
            if ($oldrev->wikiresource != $resource->id or $oldrev->is_head == true) {
 | 
			
		||||
            if ($revision->wikiresource != $resource->id or $revision->is_head == true) {
 | 
			
		||||
                return new Pluf_HTTP_Response_NotFound($request);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -382,7 +382,12 @@ class IDF_Views_Wiki
 | 
			
		||||
            return new Pluf_HTTP_Response_NotFound($request);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new Pluf_HTTP_Response_File($rev->getFilePath(), $res->mime_type);
 | 
			
		||||
        $response = new Pluf_HTTP_Response_File($rev->getFilePath(), $res->mime_type);
 | 
			
		||||
        if (isset($request->GET['attachment']) && $request->GET['attachment']) {
 | 
			
		||||
            $response->headers['Content-Disposition'] =
 | 
			
		||||
                'attachment; filename="'.$res->title.'.'.$rev->fileext.'"';
 | 
			
		||||
        }
 | 
			
		||||
        return $response;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -425,7 +430,7 @@ class IDF_Views_Wiki
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * View a documentation page.
 | 
			
		||||
     * Update a documentation page.
 | 
			
		||||
     */
 | 
			
		||||
    public $updatePage_precond = array('IDF_Precondition::accessWiki',
 | 
			
		||||
                                       'Pluf_Precondition::loginRequired');
 | 
			
		||||
@@ -475,6 +480,54 @@ class IDF_Views_Wiki
 | 
			
		||||
                                               $request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update a documentation resource.
 | 
			
		||||
     */
 | 
			
		||||
    public $updateResource_precond = array('IDF_Precondition::accessWiki',
 | 
			
		||||
                                           'Pluf_Precondition::loginRequired');
 | 
			
		||||
    public function updateResource($request, $match)
 | 
			
		||||
    {
 | 
			
		||||
        $prj = $request->project;
 | 
			
		||||
        // Find the page
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND title=%s',
 | 
			
		||||
                            array($prj->id, $match[2]));
 | 
			
		||||
        $resources = Pluf::factory('IDF_Wiki_Resource')->getList(array('filter'=>$sql->gen()));
 | 
			
		||||
        if ($resources->count() != 1) {
 | 
			
		||||
            return new Pluf_HTTP_Response_NotFound($request);
 | 
			
		||||
        }
 | 
			
		||||
        $resource = $resources[0];
 | 
			
		||||
        $title = sprintf(__('Update %s'), $resource->title);
 | 
			
		||||
        $revision = $resource->get_current_revision();
 | 
			
		||||
        $params = array('project' => $prj,
 | 
			
		||||
                        'user' => $request->user,
 | 
			
		||||
                        'resource' => $resource);
 | 
			
		||||
        if ($request->method == 'POST') {
 | 
			
		||||
            $form = new IDF_Form_WikiResourceUpdate(array_merge($request->POST, $request->FILES),
 | 
			
		||||
                                                    $params);
 | 
			
		||||
            if ($form->isValid()) {
 | 
			
		||||
                $page = $form->save();
 | 
			
		||||
                $url = Pluf_HTTP_URL_urlForView('IDF_Views_Wiki::viewResource',
 | 
			
		||||
                                                array($prj->shortname, $resource->title));
 | 
			
		||||
                $request->user->setMessage(sprintf(__('The resource <a href="%s">%s</a> has been updated.'),
 | 
			
		||||
                                                   $url, Pluf_esc($resource->title)));
 | 
			
		||||
                $url = Pluf_HTTP_URL_urlForView('IDF_Views_Wiki::listResources',
 | 
			
		||||
                                                array($prj->shortname));
 | 
			
		||||
                return new Pluf_HTTP_Response_Redirect($url);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            $form = new IDF_Form_WikiResourceUpdate(null, $params);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return Pluf_Shortcuts_RenderToResponse('idf/wiki/updateResource.html',
 | 
			
		||||
                                               array(
 | 
			
		||||
                                                     'page_title' => $title,
 | 
			
		||||
                                                     'resource' => $resource,
 | 
			
		||||
                                                     'rev' => $revision,
 | 
			
		||||
                                                     'form' => $form,
 | 
			
		||||
                                                     ),
 | 
			
		||||
                                               $request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Delete a Wiki page.
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user