Merge branch 'develop' of git://projects.ceondo.com/indefero into develop
This commit is contained in:
		@@ -15,8 +15,7 @@ res=$(cd "$dir" && /bin/pwd || "$dir")
 | 
			
		||||
SCRIPTDIR="$res/$(readlink $0)"
 | 
			
		||||
PHP_POST_PUSH=$SCRIPTDIR/mtnpostpush.php
 | 
			
		||||
 | 
			
		||||
base=$(basename "$0")
 | 
			
		||||
TMPFILE=$(mktemp /tmp/${tempfoo}.XXXXXX) || exit 1
 | 
			
		||||
TMPFILE=$(mktemp /tmp/mtn-post-push.XXXXXX) || exit 1
 | 
			
		||||
while read rev; do echo $rev >> $TMPFILE; done
 | 
			
		||||
 | 
			
		||||
echo php $PHP_POST_PUSH "$1" \< $TMPFILE \&\& rm -f $TMPFILE |\
 | 
			
		||||
 
 | 
			
		||||
@@ -313,6 +313,7 @@ class IDF_Form_Admin_ProjectCreate extends Pluf_Form
 | 
			
		||||
                           'labels_download_one_max' => IDF_Form_UploadConf::init_one_max,
 | 
			
		||||
                           'labels_wiki_predefined' => IDF_Form_WikiConf::init_predefined,
 | 
			
		||||
                           'labels_wiki_one_max' => IDF_Form_WikiConf::init_one_max,
 | 
			
		||||
                           'labels_issue_template' => IDF_Form_IssueTrackingConf::init_template,
 | 
			
		||||
                           'labels_issue_open' => IDF_Form_IssueTrackingConf::init_open,
 | 
			
		||||
                           'labels_issue_closed' => IDF_Form_IssueTrackingConf::init_closed,
 | 
			
		||||
                           'labels_issue_predefined' =>  IDF_Form_IssueTrackingConf::init_predefined,
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,9 @@ class IDF_Form_IssueCreate extends Pluf_Form
 | 
			
		||||
            or $this->user->hasPerm('IDF.project-member', $this->project)) {
 | 
			
		||||
            $this->show_full = true;
 | 
			
		||||
        }
 | 
			
		||||
        $contentTemplate = $this->project->getConf()->getVal(
 | 
			
		||||
            'labels_issue_template', IDF_Form_IssueTrackingConf::init_template
 | 
			
		||||
        );
 | 
			
		||||
        $this->fields['summary'] = new Pluf_Form_Field_Varchar(
 | 
			
		||||
                                      array('required' => true,
 | 
			
		||||
                                            'label' => __('Summary'),
 | 
			
		||||
@@ -57,7 +60,7 @@ class IDF_Form_IssueCreate extends Pluf_Form
 | 
			
		||||
        $this->fields['content'] = new Pluf_Form_Field_Varchar(
 | 
			
		||||
                                      array('required' => true,
 | 
			
		||||
                                            'label' => __('Description'),
 | 
			
		||||
                                            'initial' => '',
 | 
			
		||||
                                            'initial' => $contentTemplate,
 | 
			
		||||
                                            'widget' => 'Pluf_Form_Widget_TextareaInput',
 | 
			
		||||
                                            'widget_attrs' => array(
 | 
			
		||||
                                                       'cols' => 58,
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,15 @@ class IDF_Form_IssueTrackingConf extends Pluf_Form
 | 
			
		||||
     * Defined as constants to easily access the value in the
 | 
			
		||||
     * IssueUpdate/Create form in the case nothing is in the db yet.
 | 
			
		||||
     */
 | 
			
		||||
    const init_template = 'Steps to reproduce the problem:
 | 
			
		||||
1.
 | 
			
		||||
2.
 | 
			
		||||
3.
 | 
			
		||||
 | 
			
		||||
Expected result:
 | 
			
		||||
 | 
			
		||||
Actual result:
 | 
			
		||||
';
 | 
			
		||||
    const init_open = 'New                 = Issue has not had initial review yet
 | 
			
		||||
Accepted            = Problem reproduced / Need acknowledged
 | 
			
		||||
Started             = Work on this issue has begun';
 | 
			
		||||
@@ -66,6 +75,15 @@ Maintainability      = Hinders future changes';
 | 
			
		||||
 | 
			
		||||
    public function initFields($extra=array())
 | 
			
		||||
    {
 | 
			
		||||
        $this->fields['labels_issue_template'] = new Pluf_Form_Field_Varchar(
 | 
			
		||||
                                      array('required' => false,
 | 
			
		||||
                                            'label' => __('Define an issue template to hint the reporter to provide certain information'),
 | 
			
		||||
                                            'initial' => self::init_template,
 | 
			
		||||
                                            'widget_attrs' => array('rows' => 7,
 | 
			
		||||
                                                                    'cols' => 75),
 | 
			
		||||
                                            'widget' => 'Pluf_Form_Widget_TextareaInput',
 | 
			
		||||
                                            ));
 | 
			
		||||
 | 
			
		||||
        $this->fields['labels_issue_open'] = new Pluf_Form_Field_Varchar(
 | 
			
		||||
                                      array('required' => true,
 | 
			
		||||
                                            'label' => __('Open issue status values'),
 | 
			
		||||
@@ -99,8 +117,6 @@ Maintainability      = Hinders future changes';
 | 
			
		||||
                                            'widget_attrs' => array('size' => 60),
 | 
			
		||||
                                            ));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -112,6 +112,7 @@ function IDF_Middleware_ContextPreProcessor($request)
 | 
			
		||||
        $c = array_merge($c, $request->rights);
 | 
			
		||||
    }
 | 
			
		||||
    $c['usherConfigured'] = Pluf::f("mtn_usher_conf", null) !== null;
 | 
			
		||||
    $c['allProjects'] = IDF_Views::getProjects($request->user);
 | 
			
		||||
    return $c;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -250,7 +250,9 @@ class IDF_Plugin_SyncMonotone
 | 
			
		||||
            array('key' => 'server', 'values' => array($shortname)),
 | 
			
		||||
            array('key' => 'local', 'values' => array(
 | 
			
		||||
                '--confdir', $projectpath,
 | 
			
		||||
                '-d', $dbfile
 | 
			
		||||
                '-d', $dbfile,
 | 
			
		||||
                '--timestamps',
 | 
			
		||||
                '--ticker=dot' 
 | 
			
		||||
            )),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -413,7 +413,7 @@ class IDF_Scm_Monotone extends IDF_Scm
 | 
			
		||||
                $certs = $scm->_getCerts($revs[0]);
 | 
			
		||||
                // for the very seldom case that a revision
 | 
			
		||||
                // has no branch certificate
 | 
			
		||||
                if (count($certs['branch']) == 0) {
 | 
			
		||||
                if (!array_key_exists('branch', $certs)) {
 | 
			
		||||
                    $branch = '*';
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,66 @@ class IDF_Views_Project
 | 
			
		||||
                                               $request);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an associative array with available model filters
 | 
			
		||||
     *
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    private static function getAvailableModelFilters()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            'all'       => __('All Updates'),
 | 
			
		||||
            'commits'   => __('Commits'),
 | 
			
		||||
            'issues'    => __('Issues and Comments'),
 | 
			
		||||
            'downloads' => __('Downloads'),
 | 
			
		||||
            'documents' => __('Documents'),
 | 
			
		||||
            'reviews'   => __('Reviews and Patches'),
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an array of model classes for which the current user
 | 
			
		||||
     * has rights and which should be used according to his filter
 | 
			
		||||
     *
 | 
			
		||||
     * @param object $request
 | 
			
		||||
     * @param string $model_filter
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    private static function determineModelClasses($request, $model_filter = 'all')
 | 
			
		||||
    {
 | 
			
		||||
        $classes = array();
 | 
			
		||||
        if (true === IDF_Precondition::accessSource($request) &&
 | 
			
		||||
            ($model_filter == 'all' || $model_filter == 'commits')) {
 | 
			
		||||
            $classes[] = '\'IDF_Commit\'';
 | 
			
		||||
            // FIXME: this looks like a hack...
 | 
			
		||||
            IDF_Scm::syncTimeline($request->project);
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessIssues($request) &&
 | 
			
		||||
            ($model_filter == 'all' || $model_filter == 'issues')) {
 | 
			
		||||
            $classes[] = '\'IDF_Issue\'';
 | 
			
		||||
            $classes[] = '\'IDF_IssueComment\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessDownloads($request) &&
 | 
			
		||||
            ($model_filter == 'all' || $model_filter == 'downloads')) {
 | 
			
		||||
            $classes[] = '\'IDF_Upload\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessWiki($request) &&
 | 
			
		||||
            ($model_filter == 'all' || $model_filter == 'documents')) {
 | 
			
		||||
            $classes[] = '\'IDF_WikiPage\'';
 | 
			
		||||
            $classes[] = '\'IDF_WikiRevision\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessReview($request) &&
 | 
			
		||||
            ($model_filter == 'all' || $model_filter == 'reviews')) {
 | 
			
		||||
            $classes[] = '\'IDF_Review_Comment\'';
 | 
			
		||||
            $classes[] = '\'IDF_Review_Patch\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (count($classes) == 0) {
 | 
			
		||||
            $classes[] = '\'IDF_Dummy\'';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $classes;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Timeline of the project.
 | 
			
		||||
     */
 | 
			
		||||
@@ -68,38 +128,21 @@ class IDF_Views_Project
 | 
			
		||||
    public function timeline($request, $match)
 | 
			
		||||
    {
 | 
			
		||||
        $prj = $request->project;
 | 
			
		||||
        $title = sprintf(__('%s Updates'), (string) $prj);
 | 
			
		||||
        $team = $prj->getMembershipData();
 | 
			
		||||
        
 | 
			
		||||
        $model_filter = @$match[2];
 | 
			
		||||
        $all_model_filters = self::getAvailableModelFilters();
 | 
			
		||||
        if (!array_key_exists($model_filter, $all_model_filters)) {
 | 
			
		||||
            $model_filter = 'all';
 | 
			
		||||
        }
 | 
			
		||||
        $title = (string)$prj . ' ' . $all_model_filters[$model_filter];
 | 
			
		||||
 | 
			
		||||
        $pag = new IDF_Timeline_Paginator(new IDF_Timeline());
 | 
			
		||||
        $pag->class = 'recent-issues';
 | 
			
		||||
        $pag->item_extra_props = array('request' => $request);
 | 
			
		||||
        $pag->summary = __('This table shows the project updates.');
 | 
			
		||||
        // Need to check the rights
 | 
			
		||||
        $rights = array();
 | 
			
		||||
        if (true === IDF_Precondition::accessSource($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Commit\'';
 | 
			
		||||
            IDF_Scm::syncTimeline($request->project);
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessIssues($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Issue\'';
 | 
			
		||||
            $rights[] = '\'IDF_IssueComment\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessDownloads($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Upload\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessWiki($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_WikiPage\'';
 | 
			
		||||
            $rights[] = '\'IDF_WikiRevision\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessReview($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Review_Comment\'';
 | 
			
		||||
            $rights[] = '\'IDF_Review_Patch\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (count($rights) == 0) {
 | 
			
		||||
            $rights[] = '\'IDF_Dummy\'';
 | 
			
		||||
        }
 | 
			
		||||
        $sql = sprintf('model_class IN (%s)', implode(', ', $rights));
 | 
			
		||||
 | 
			
		||||
        $classes = self::determineModelClasses($request, $model_filter);
 | 
			
		||||
        $sql = sprintf('model_class IN (%s)', implode(', ', $classes));
 | 
			
		||||
        $pag->forced_where = new Pluf_SQL('project=%s AND '.$sql,
 | 
			
		||||
                                          array($prj->id));
 | 
			
		||||
        $pag->sort_order = array('creation_dtime', 'ASC');
 | 
			
		||||
@@ -113,32 +156,23 @@ class IDF_Views_Project
 | 
			
		||||
        $pag->items_per_page = 20;
 | 
			
		||||
        $pag->no_results_text = __('No changes were found.');
 | 
			
		||||
        $pag->setFromRequest($request);
 | 
			
		||||
        $downloads = array();
 | 
			
		||||
        if ($request->rights['hasDownloadsAccess']) {
 | 
			
		||||
            $tags = IDF_Views_Download::getDownloadTags($prj);
 | 
			
		||||
            // the first tag is the featured, the last is the deprecated.
 | 
			
		||||
            $downloads = $tags[0]->get_idf_upload_list();
 | 
			
		||||
        }
 | 
			
		||||
        $pages = array();
 | 
			
		||||
        if ($request->rights['hasWikiAccess']) {
 | 
			
		||||
            $tags = IDF_Views_Wiki::getWikiTags($prj);
 | 
			
		||||
            $pages = $tags[0]->get_idf_wikipage_list();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        if (!$request->user->isAnonymous() and $prj->isRestricted()) {
 | 
			
		||||
            $feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth',
 | 
			
		||||
                                                array($prj->shortname,
 | 
			
		||||
                                                      $model_filter,
 | 
			
		||||
                                                      IDF_Precondition::genFeedToken($prj, $request->user)));
 | 
			
		||||
        } else {
 | 
			
		||||
            $feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed',
 | 
			
		||||
                                                array($prj->shortname));
 | 
			
		||||
                                                array($prj->shortname, $model_filter));
 | 
			
		||||
        }
 | 
			
		||||
        return Pluf_Shortcuts_RenderToResponse('idf/project/timeline.html',
 | 
			
		||||
                                               array(
 | 
			
		||||
                                                     'page_title' => $title,
 | 
			
		||||
                                                     'feedurl' => $feedurl,
 | 
			
		||||
                                                     'timeline' => $pag,
 | 
			
		||||
                                                     'team' => $team,
 | 
			
		||||
                                                     'downloads' => $downloads,
 | 
			
		||||
                                                     'model_filter' => $model_filter,
 | 
			
		||||
                                                     'all_model_filters' => $all_model_filters,
 | 
			
		||||
                                                     ),
 | 
			
		||||
                                               $request);
 | 
			
		||||
 | 
			
		||||
@@ -156,31 +190,17 @@ class IDF_Views_Project
 | 
			
		||||
    public function timelineFeed($request, $match)
 | 
			
		||||
    {
 | 
			
		||||
        $prj = $request->project;
 | 
			
		||||
        // Need to check the rights
 | 
			
		||||
        $rights = array();
 | 
			
		||||
        if (true === IDF_Precondition::accessSource($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Commit\'';
 | 
			
		||||
            IDF_Scm::syncTimeline($request->project);
 | 
			
		||||
        $model_filter = @$match[2];
 | 
			
		||||
 | 
			
		||||
        $model_filter = @$match[2];
 | 
			
		||||
        $all_model_filters = self::getAvailableModelFilters();
 | 
			
		||||
        if (!array_key_exists($model_filter, $all_model_filters)) {
 | 
			
		||||
            $model_filter = 'all';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessIssues($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Issue\'';
 | 
			
		||||
            $rights[] = '\'IDF_IssueComment\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessDownloads($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Upload\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessWiki($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_WikiPage\'';
 | 
			
		||||
            $rights[] = '\'IDF_WikiRevision\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (true === IDF_Precondition::accessReview($request)) {
 | 
			
		||||
            $rights[] = '\'IDF_Review_Comment\'';
 | 
			
		||||
            $rights[] = '\'IDF_Review_Patch\'';
 | 
			
		||||
        }
 | 
			
		||||
        if (count($rights) == 0) {
 | 
			
		||||
            $rights[] = '\'IDF_Dummy\'';
 | 
			
		||||
        }
 | 
			
		||||
        $sqls = sprintf('model_class IN (%s)', implode(', ', $rights));
 | 
			
		||||
        $title = $all_model_filters[$model_filter];
 | 
			
		||||
       
 | 
			
		||||
        $classes = self::determineModelClasses($request, $model_filter);
 | 
			
		||||
        $sqls = sprintf('model_class IN (%s)', implode(', ', $classes));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND '.$sqls, array($prj->id));
 | 
			
		||||
        $params = array(
 | 
			
		||||
                        'filter' => $sql->gen(),
 | 
			
		||||
@@ -203,7 +223,6 @@ class IDF_Views_Project
 | 
			
		||||
        }
 | 
			
		||||
        $out = Pluf_Template::markSafe(implode("\n", $out));
 | 
			
		||||
        $tmpl = new Pluf_Template('idf/index.atom');
 | 
			
		||||
        $title = __('Updates');
 | 
			
		||||
        $feedurl = Pluf::f('url_base').Pluf::f('idf_base').$request->query;
 | 
			
		||||
        $viewurl = Pluf_HTTP_URL_urlForView('IDF_Views_Project::timeline',
 | 
			
		||||
                                            array($prj->shortname));
 | 
			
		||||
@@ -277,7 +296,8 @@ class IDF_Views_Project
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            $params = array();
 | 
			
		||||
            $keys = array('labels_issue_open', 'labels_issue_closed',
 | 
			
		||||
            $keys = array('labels_issue_template',
 | 
			
		||||
                          'labels_issue_open', 'labels_issue_closed',
 | 
			
		||||
                          'labels_issue_predefined', 'labels_issue_one_max');
 | 
			
		||||
            foreach ($keys as $key) {
 | 
			
		||||
                $_val = $conf->getVal($key, false);
 | 
			
		||||
@@ -535,4 +555,4 @@ class IDF_Views_Project
 | 
			
		||||
                                                     ),
 | 
			
		||||
                                               $request);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -533,8 +533,10 @@ class IDF_Views_Source
 | 
			
		||||
        if (0 === strpos($fileinfo[0], 'text/')) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        $ext = 'mdtext php-dist h gitignore diff patch'
 | 
			
		||||
            .Pluf::f('idf_extra_text_ext', '');
 | 
			
		||||
        $ext = 'mdtext php-dist h gitignore diff patch';
 | 
			
		||||
        $extra_ext = trim(Pluf::f('idf_extra_text_ext', ''));
 | 
			
		||||
        if (!empty($extra_ext))
 | 
			
		||||
            $ext .= ' ' . $extra_ext;
 | 
			
		||||
        $ext = array_merge(self::$supportedExtenstions, explode(' ' , $ext));
 | 
			
		||||
        return (in_array($fileinfo[2], $ext));
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -205,8 +205,8 @@ $cfg['db_database'] = 'website'; # put absolute path to the db if you
 | 
			
		||||
                                 # are using SQLite.
 | 
			
		||||
#
 | 
			
		||||
# The extension of the downloads are limited. You can add extra
 | 
			
		||||
# extensions here. The list must start with a space.
 | 
			
		||||
# $cfg['idf_extra_upload_ext'] = ' ext1 ext2';
 | 
			
		||||
# extensions here.
 | 
			
		||||
# $cfg['idf_extra_upload_ext'] = 'ext1 ext2';
 | 
			
		||||
#
 | 
			
		||||
# By default, the size of the downloads is limited to 2MB.
 | 
			
		||||
# The php.ini upload_max_filesize configuration setting will
 | 
			
		||||
@@ -256,6 +256,13 @@ $cfg['allowed_scm'] = array('git' => 'IDF_Scm_Git',
 | 
			
		||||
                            'mtn' => 'IDF_Scm_Monotone',
 | 
			
		||||
                            );
 | 
			
		||||
 | 
			
		||||
# Set to true when uploaded public keys should not only be validated
 | 
			
		||||
# syntactically, but also by the specific backend. For SSH public
 | 
			
		||||
# keys, ssh-keygen(3) must be available and usable in PATH, for
 | 
			
		||||
# monotone public keys, the monotone binary (as configured above)
 | 
			
		||||
# is used. 
 | 
			
		||||
# $cfg['idf_strong_key_check'] = false;
 | 
			
		||||
 | 
			
		||||
# If you want to use another memtypes database
 | 
			
		||||
# $cfg['idf_mimetypes_db'] = '/etc/mime.types';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -74,18 +74,18 @@ $ctl[] = array('regex' => '#^/p/([\-\w]+)/$#',
 | 
			
		||||
               'model' => 'IDF_Views_Project',
 | 
			
		||||
               'method' => 'home');
 | 
			
		||||
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/timeline/$#',
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/timeline/(\w+)/$#',
 | 
			
		||||
               'base' => $base,
 | 
			
		||||
               'model' => 'IDF_Views_Project',
 | 
			
		||||
               'method' => 'timeline');
 | 
			
		||||
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/feed/timeline/$#',
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/feed/timeline/(\w+)/$#',
 | 
			
		||||
               'base' => $base,
 | 
			
		||||
               'model' => 'IDF_Views_Project',
 | 
			
		||||
               'method' => 'timelineFeed',
 | 
			
		||||
               'name' => 'idf_project_timeline_feed');
 | 
			
		||||
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/feed/timeline/token/(.*)/$#',
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/feed/timeline/(\w+)/token/(.*)/$#',
 | 
			
		||||
               'base' => $base,
 | 
			
		||||
               'model' => 'IDF_Views_Project',
 | 
			
		||||
               'method' => 'timelineFeed',
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +96,7 @@ Pluf_Signal::connect('IDF_Key::postSave',
 | 
			
		||||
                     array('IDF_Plugin_SyncMonotone', 'entry'));
 | 
			
		||||
Pluf_Signal::connect('IDF_Key::preDelete',
 | 
			
		||||
                     array('IDF_Plugin_SyncMonotone', 'entry'));
 | 
			
		||||
Pluf_Signal::connect('phppostpush.php::run',
 | 
			
		||||
Pluf_Signal::connect('mtnpostpush.php::run',
 | 
			
		||||
                     array('IDF_Plugin_SyncMonotone', 'entry'));
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,12 @@
 | 
			
		||||
<form method="post" action=".">
 | 
			
		||||
<table class="form" summary="">
 | 
			
		||||
<tr>
 | 
			
		||||
<td colspan="2"><strong>{$form.f.labels_issue_template.labelTag}:</strong><br />
 | 
			
		||||
{if $form.f.labels_issue_template.errors}{$form.f.labels_issue_template.fieldErrors}{/if}
 | 
			
		||||
{$form.f.labels_issue_template|unsafe}
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td colspan="2"><strong>{$form.f.labels_issue_open.labelTag}:</strong><br />
 | 
			
		||||
{if $form.f.labels_issue_open.errors}{$form.f.labels_issue_open.fieldErrors}{/if}
 | 
			
		||||
{$form.f.labels_issue_open|unsafe}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,22 +29,19 @@
 | 
			
		||||
  <![endif]-->
 | 
			
		||||
  {block extraheader}{/block}
 | 
			
		||||
  <title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
 | 
			
		||||
  <script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div id="{block docid}doc3{/block}">
 | 
			
		||||
  <div id="hd">
 | 
			
		||||
{if $project}<h1 class="project-title">{$project}</h1>{/if}
 | 
			
		||||
    <p class="top"><a href="#title" accesskey="2"></a>
 | 
			
		||||
{if !$user.isAnonymous()}{aurl 'url', 'idf_dashboard'}{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans} <a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a>{else}<a href="{url 'IDF_Views::login'}">{trans 'Sign in or create your account'}</a>{/if}
 | 
			
		||||
{if $project} | <a href="{url 'IDF_Views::index'}">{trans 'Project List'}</a>{/if}
 | 
			
		||||
| <a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a>
 | 
			
		||||
    </p>
 | 
			
		||||
    {if $project}<h1 class="project-title">{$project}</h1>{/if}
 | 
			
		||||
    {include 'idf/main-menu.html'}
 | 
			
		||||
<div id="header">
 | 
			
		||||
<div id="main-tabs">
 | 
			
		||||
{if $project}
 | 
			
		||||
  <a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a> 
 | 
			
		||||
{if $hasDownloadsAccess}  <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if} 
 | 
			
		||||
{if $hasWikiAccess}  <a href="{url 'IDF_Views_Wiki::index', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if} 
 | 
			
		||||
  <a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a>
 | 
			
		||||
{if $hasDownloadsAccess}  <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if}
 | 
			
		||||
{if $hasWikiAccess}  <a href="{url 'IDF_Views_Wiki::index', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if}
 | 
			
		||||
{if $hasIssuesAccess} <a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>{/if}
 | 
			
		||||
{if $hasSourceAccess} <a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}"{block tabsource}{/block}>{trans 'Source'}</a>{/if}
 | 
			
		||||
{if $hasReviewAccess} <a href="{url 'IDF_Views_Review::index', array($project.shortname)}"{block tabreview}{/block}>{trans 'Code Review'}</a>{/if}
 | 
			
		||||
@@ -54,35 +51,34 @@
 | 
			
		||||
{block subtabs}{if $user.isAnonymous()} | {aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in or create your account</a> to create issues or add comments{/blocktrans}{/if}{/block}
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
	  <h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
 | 
			
		||||
      <h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="bd">
 | 
			
		||||
    <div id="yui-main"> 
 | 
			
		||||
    <div id="yui-main">
 | 
			
		||||
      <div class="yui-b">
 | 
			
		||||
	<div class="yui-g"> 
 | 
			
		||||
    <div class="yui-g">
 | 
			
		||||
          {if $user and $user.id}{getmsgs $user}{/if}
 | 
			
		||||
	  <div class="content">{block body}{/block}</div>
 | 
			
		||||
	</div>
 | 
			
		||||
      <div class="content">{block body}{/block}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="ft">{block foot}{/block}</div>
 | 
			
		||||
</div>
 | 
			
		||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
{include 'idf/js-hotkeys.html'}
 | 
			
		||||
{block javascript}{/block}
 | 
			
		||||
{if $project}
 | 
			
		||||
<script type="text/javascript" charset="utf-8">{literal}
 | 
			
		||||
//<![CDATA[
 | 
			
		||||
$(document).ready(function(){
 | 
			
		||||
	var frag = location.hash;
 | 
			
		||||
	if ($('#preview').length) {
 | 
			
		||||
		location.hash = '#preview';
 | 
			
		||||
	}
 | 
			
		||||
	else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
 | 
			
		||||
		$(frag).addClass("issue-comment-focus");
 | 
			
		||||
	}
 | 
			
		||||
    var frag = location.hash;
 | 
			
		||||
    if ($('#preview').length) {
 | 
			
		||||
        location.hash = '#preview';
 | 
			
		||||
    }
 | 
			
		||||
    else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
 | 
			
		||||
        $(frag).addClass("issue-comment-focus");
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
//]]>{/literal}
 | 
			
		||||
</script>{/if}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,31 +29,27 @@
 | 
			
		||||
  <![endif]-->
 | 
			
		||||
  {block extraheader}{/block}
 | 
			
		||||
  <title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
 | 
			
		||||
  <script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
 | 
			
		||||
  <div id="hd">
 | 
			
		||||
    <p class="top"><a href="#title" accesskey="2"></a>
 | 
			
		||||
{if !$user.isAnonymous()}{aurl 'url', 'idf_dashboard'}{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans} <a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a>{else}<a href="{url 'IDF_Views::login'}">{trans 'Sign in or create your account'}</a>{/if}
 | 
			
		||||
 | <a href="{url 'IDF_Views::index'}">{trans 'Project List'}</a> {if $isAdmin}| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Forge Management'}</a>{/if}
 | 
			
		||||
| <a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a>
 | 
			
		||||
    </p>
 | 
			
		||||
	  <h1 id="title" class="title">{block title}{$page_title}{/block}</h1>
 | 
			
		||||
     {include 'idf/main-menu.html'}
 | 
			
		||||
     <h1 id="title" class="title">{block title}{$page_title}{/block}</h1>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="bd">
 | 
			
		||||
    <div id="yui-main"> 
 | 
			
		||||
    <div id="yui-main">
 | 
			
		||||
      <div class="yui-b">
 | 
			
		||||
	<div class="yui-g"> 
 | 
			
		||||
    <div class="yui-g">
 | 
			
		||||
          {if $user and $user.id}{getmsgs $user}{/if}
 | 
			
		||||
	  <div class="content">{block body}{/block}</div>
 | 
			
		||||
	</div>
 | 
			
		||||
      <div class="content">{block body}{/block}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="yui-b context">{block context}{/block}</div>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="ft">{block foot}{/block}</div>
 | 
			
		||||
</div>
 | 
			
		||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
{include 'idf/js-hotkeys.html'}
 | 
			
		||||
{block javascript}{/block}
 | 
			
		||||
</body>
 | 
			
		||||
 
 | 
			
		||||
@@ -29,23 +29,19 @@
 | 
			
		||||
  <![endif]-->
 | 
			
		||||
  {block extraheader}{/block}
 | 
			
		||||
  <title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
 | 
			
		||||
  <script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
 | 
			
		||||
  <div id="hd">
 | 
			
		||||
{if $project}<h1 class="project-title">{$project}</h1>{/if}
 | 
			
		||||
    <p class="top"><a href="#title" accesskey="2"></a>
 | 
			
		||||
{if !$user.isAnonymous()}{aurl 'url', 'idf_dashboard'}{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans} <a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a>{else}<a href="{url 'IDF_Views::login'}">{trans 'Sign in or create your account'}</a>{/if}
 | 
			
		||||
{if $project} | <a href="{url 'IDF_Views::index'}">{trans 'Project List'}</a>{/if}
 | 
			
		||||
{if $isAdmin}| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Forge Management'}</a>{/if}
 | 
			
		||||
| <a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a>
 | 
			
		||||
    </p>
 | 
			
		||||
    {if $project}<h1 class="project-title">{$project}</h1>{/if}
 | 
			
		||||
    {include 'idf/main-menu.html'}
 | 
			
		||||
<div id="header">
 | 
			
		||||
<div id="main-tabs">
 | 
			
		||||
{if $project}
 | 
			
		||||
  <a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a> 
 | 
			
		||||
{if $hasDownloadsAccess}  <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if} 
 | 
			
		||||
{if $hasWikiAccess}  <a href="{url 'IDF_Views_Wiki::index', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if} 
 | 
			
		||||
  <a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a>
 | 
			
		||||
{if $hasDownloadsAccess}  <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if}
 | 
			
		||||
{if $hasWikiAccess}  <a href="{url 'IDF_Views_Wiki::index', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if}
 | 
			
		||||
{if $hasIssuesAccess} <a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>{/if}
 | 
			
		||||
{if $hasSourceAccess} <a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}"{block tabsource}{/block}>{trans 'Source'}</a>{/if}
 | 
			
		||||
{if $hasReviewAccess} <a href="{url 'IDF_Views_Review::index', array($project.shortname)}"{block tabreview}{/block}>{trans 'Code Review'}</a>{/if}
 | 
			
		||||
@@ -55,36 +51,35 @@
 | 
			
		||||
{block subtabs}{if $user.isAnonymous()} | {aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in or create your account</a> to create issues or add comments{/blocktrans}{/if}{/block}
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
	  <h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
 | 
			
		||||
      <h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="bd">
 | 
			
		||||
    <div id="yui-main"> 
 | 
			
		||||
    <div id="yui-main">
 | 
			
		||||
      <div class="yui-b">
 | 
			
		||||
	<div class="yui-g"> 
 | 
			
		||||
    <div class="yui-g">
 | 
			
		||||
          {if $user and $user.id}{getmsgs $user}{/if}
 | 
			
		||||
	  <div class="content">{block body}{/block}</div>
 | 
			
		||||
	</div>
 | 
			
		||||
      <div class="content">{block body}{/block}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="yui-b context">{block context}{/block}</div>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="ft">{block foot}{/block}</div>
 | 
			
		||||
</div>
 | 
			
		||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
{include 'idf/js-hotkeys.html'}
 | 
			
		||||
{block javascript}{/block}
 | 
			
		||||
{if $project}
 | 
			
		||||
<script type="text/javascript" charset="utf-8">{literal}
 | 
			
		||||
//<![CDATA[
 | 
			
		||||
$(document).ready(function(){
 | 
			
		||||
	var frag = location.hash;
 | 
			
		||||
	if ($('#preview').length) {
 | 
			
		||||
		location.hash = '#preview';
 | 
			
		||||
	}
 | 
			
		||||
	else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
 | 
			
		||||
		$(frag).addClass("issue-comment-focus");
 | 
			
		||||
	}
 | 
			
		||||
    var frag = location.hash;
 | 
			
		||||
    if ($('#preview').length) {
 | 
			
		||||
        location.hash = '#preview';
 | 
			
		||||
    }
 | 
			
		||||
    else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
 | 
			
		||||
        $(frag).addClass("issue-comment-focus");
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
//]]>{/literal}
 | 
			
		||||
</script>{/if}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,16 +29,12 @@
 | 
			
		||||
  <![endif]-->
 | 
			
		||||
  {block extraheader}{/block}
 | 
			
		||||
  <title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
 | 
			
		||||
  <script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
 | 
			
		||||
  <div id="hd">
 | 
			
		||||
    <p class="top"><a href="#title" accesskey="2"></a>
 | 
			
		||||
{aurl 'url', 'IDF_Views_User::dashboard'}{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans} <a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a>
 | 
			
		||||
| <a href="{url 'IDF_Views::index'}">{trans 'Project List'}</a>
 | 
			
		||||
| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Forge Management'}</a>
 | 
			
		||||
| <a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a>
 | 
			
		||||
    </p>
 | 
			
		||||
    {include 'idf/main-menu.html'}
 | 
			
		||||
<div id="header">
 | 
			
		||||
<div id="main-tabs">
 | 
			
		||||
  <a href="{url 'IDF_Views_Admin::projects'}"{block tabprojects}{/block}>{trans 'Projects'}</a>
 | 
			
		||||
@@ -64,7 +60,6 @@
 | 
			
		||||
  </div>
 | 
			
		||||
  <div id="ft">{block foot}{/block}</div>
 | 
			
		||||
</div>
 | 
			
		||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
 | 
			
		||||
{include 'idf/js-hotkeys.html'}
 | 
			
		||||
{block javascript}{/block}
 | 
			
		||||
</body>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
// <!--
 | 
			
		||||
{hotkey 'Shift+h', 'IDF_Views::faq'}
 | 
			
		||||
{if $project}
 | 
			
		||||
{hotkey 'Shift+u', 'IDF_Views_Project::timeline', array($project.shortname)}
 | 
			
		||||
{hotkey 'Shift+u', 'IDF_Views_Project::timeline', array($project.shortname, 'all')}
 | 
			
		||||
{if $hasIssuesAccess}{hotkey 'Shift+a', 'IDF_Views_Issue::create', array($project.shortname)}
 | 
			
		||||
{hotkey 'Shift+i', 'IDF_Views_Issue::index', array($project.shortname)}{/if}
 | 
			
		||||
{if $hasDownloadsAccess}{hotkey 'Shift+d', 'IDF_Views_Download::index', array($project.shortname)}{/if}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								src/IDF/templates/idf/main-menu.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/IDF/templates/idf/main-menu.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
<a href="#title" accesskey="2"></a>
 | 
			
		||||
<ul id="main-menu">
 | 
			
		||||
{if !$user.isAnonymous()}
 | 
			
		||||
{aurl 'url', 'idf_dashboard'}
 | 
			
		||||
<li>{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans}
 | 
			
		||||
<a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a></li>{else}<li>
 | 
			
		||||
<a href="{url 'IDF_Views::login'}">{trans 'Sign in or create your account'}</a></li>
 | 
			
		||||
{/if}<li id="project-list"><a href="{url 'IDF_Views::index'}">{trans 'Project List'} ▾</a>
 | 
			
		||||
{if $allProjects.count() != 0}
 | 
			
		||||
<ul>{foreach $allProjects as $p}
 | 
			
		||||
<li>{if $p.private}<img style="vertical-align: text-bottom;" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" /> {/if}
 | 
			
		||||
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}">{$p}</a></li>
 | 
			
		||||
{/foreach}</ul>
 | 
			
		||||
{/if}</li>{if $isAdmin}<li><a href="{url 'IDF_Views_Admin::projects'}">{trans 'Forge Management'}</a></li>{/if}<li>
 | 
			
		||||
<a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
{if $allProjects.count() != 0}
 | 
			
		||||
<script type="text/javascript" charset="utf-8">
 | 
			
		||||
{literal}
 | 
			
		||||
$(document).ready(function() {
 | 
			
		||||
  $('#project-list').bind('mouseenter', function(ev) {
 | 
			
		||||
    $(this).find('ul').show();
 | 
			
		||||
  }).bind('mouseleave', function(ev) {
 | 
			
		||||
    $(this).find('ul').hide();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
{/literal}
 | 
			
		||||
</script>
 | 
			
		||||
{/if}
 | 
			
		||||
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
{block tabhome} class="active"{/block}
 | 
			
		||||
{block subtabs}
 | 
			
		||||
<div id="sub-tabs">
 | 
			
		||||
{trans 'Welcome'} | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname)}">{trans 'Latest Updates'}</a></strong>{superblock}
 | 
			
		||||
{trans 'Welcome'} | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, 'all')}">{trans 'Latest Updates'}</a></strong>{superblock}
 | 
			
		||||
</div>
 | 
			
		||||
{/block}
 | 
			
		||||
{block body}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
{block tabhome} class="active"{/block}
 | 
			
		||||
{block subtabs}
 | 
			
		||||
<div id="sub-tabs">
 | 
			
		||||
<a href="{url 'IDF_Views_Project::home', array($project.shortname)}">{trans 'Welcome'}</a> | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname)}" class="active">{trans 'Latest Updates'}</a></strong>{superblock}
 | 
			
		||||
<a href="{url 'IDF_Views_Project::home', array($project.shortname)}">{trans 'Welcome'}</a> | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, 'all')}" class="active">{trans 'Latest Updates'}</a></strong>{superblock}
 | 
			
		||||
</div>
 | 
			
		||||
{/block}
 | 
			
		||||
 | 
			
		||||
@@ -13,26 +13,10 @@
 | 
			
		||||
{/block}
 | 
			
		||||
 | 
			
		||||
{block context}
 | 
			
		||||
{if count($downloads) > 0}
 | 
			
		||||
<p><strong>{trans 'Featured Downloads'}</strong><br />
 | 
			
		||||
{foreach $downloads as $download}
 | 
			
		||||
<span class="label"><a href="{url 'IDF_Views_Download::view', array($project.shortname, $download.id)}" title="{$download.summary}">{$download}</a></span><br />
 | 
			
		||||
<p><strong>{trans 'Filter by type'}</strong><br />
 | 
			
		||||
{foreach $all_model_filters as $filter_key => $filter_name}
 | 
			
		||||
<span class="label{if $filter_key == $model_filter} active{/if}"><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, $filter_key)}">{$filter_name}</a></span><br />
 | 
			
		||||
{/foreach}
 | 
			
		||||
<span class="label"> </span><span class="note"><a href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'show more...'}</a></span>
 | 
			
		||||
{/if}
 | 
			
		||||
{assign $ko = 'owners'}
 | 
			
		||||
{assign $km = 'members'}
 | 
			
		||||
<p><strong>{trans 'Development Team'}</strong><br />
 | 
			
		||||
{trans 'Admins'}<br />
 | 
			
		||||
{foreach $team[$ko] as $owner}{aurl 'url', 'IDF_Views_User::view', array($owner.login)}
 | 
			
		||||
<span class="label"><a class="label" href="{$url}">{$owner}</a></span><br />
 | 
			
		||||
{/foreach}
 | 
			
		||||
{if count($team[$km]) > 0}
 | 
			
		||||
{trans 'Happy Crew'}<br />
 | 
			
		||||
{foreach $team[$km] as $member}{aurl 'url', 'IDF_Views_User::view', array($member.login)}
 | 
			
		||||
<span class="label"><a class="label" href="{$url}">{$member}</a></span><br />
 | 
			
		||||
{/foreach}
 | 
			
		||||
{/if}
 | 
			
		||||
</p>
 | 
			
		||||
{/block}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,92 +19,92 @@
 | 
			
		||||
#
 | 
			
		||||
# ***** END LICENSE BLOCK ***** */
 | 
			
		||||
 | 
			
		||||
body { 
 | 
			
		||||
body {
 | 
			
		||||
  font-family: arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.top { 
 | 
			
		||||
.top {
 | 
			
		||||
  margin-top: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a:link { 
 | 
			
		||||
  color: #00e; 
 | 
			
		||||
a:link {
 | 
			
		||||
  color: #00e;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a:visited { 
 | 
			
		||||
a:visited {
 | 
			
		||||
  color: #551a8b;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
a:active{ 
 | 
			
		||||
  color: #f00; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.yui-g { 
 | 
			
		||||
a:active{
 | 
			
		||||
  color: #f00;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.yui-g {
 | 
			
		||||
  padding: 0 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.right { 
 | 
			
		||||
.right {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.a-c { 
 | 
			
		||||
.a-c {
 | 
			
		||||
  text-align: center !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dellink { 
 | 
			
		||||
  float: right; 
 | 
			
		||||
  position: relative; 
 | 
			
		||||
.dellink {
 | 
			
		||||
  float: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dellink a { 
 | 
			
		||||
.dellink a {
 | 
			
		||||
  color: #a00;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.userw { 
 | 
			
		||||
a.userw {
 | 
			
		||||
  color: #000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mono { 
 | 
			
		||||
.mono {
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.soft { 
 | 
			
		||||
.soft {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.soft a { 
 | 
			
		||||
.soft a {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.soft { 
 | 
			
		||||
a.soft {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.soft:visited { 
 | 
			
		||||
a.soft:visited {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.context { 
 | 
			
		||||
div.context {
 | 
			
		||||
  padding-left: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Form
 | 
			
		||||
 */
 | 
			
		||||
form.star { 
 | 
			
		||||
form.star {
 | 
			
		||||
  display: inline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.form th, table.form td { 
 | 
			
		||||
table.form th, table.form td {
 | 
			
		||||
  border: none;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
}
 | 
			
		||||
table.form th { 
 | 
			
		||||
table.form th {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.px-message-error { 
 | 
			
		||||
.px-message-error {
 | 
			
		||||
  padding-left: 37px;
 | 
			
		||||
  background: url("../img/dialog-error.png");
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
@@ -114,12 +114,12 @@ table.form th {
 | 
			
		||||
  padding-bottom: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ul.errorlist { 
 | 
			
		||||
ul.errorlist {
 | 
			
		||||
  color: #c00;
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.user-messages { 
 | 
			
		||||
div.user-messages {
 | 
			
		||||
  border: 1px solid rgb(229, 225, 169);
 | 
			
		||||
  background-color: #fffde3;
 | 
			
		||||
  margin-bottom: 1em;
 | 
			
		||||
@@ -127,7 +127,7 @@ div.user-messages {
 | 
			
		||||
  width: 90%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.theterms { 
 | 
			
		||||
div.theterms {
 | 
			
		||||
  border: 1px solid rgb(229, 225, 169);
 | 
			
		||||
  background-color: #fffde3;
 | 
			
		||||
  padding: 1em 1em 0 1em;
 | 
			
		||||
@@ -137,92 +137,92 @@ div.theterms {
 | 
			
		||||
/**
 | 
			
		||||
 * Recent issues
 | 
			
		||||
 */
 | 
			
		||||
table.recent-issues { 
 | 
			
		||||
table.recent-issues {
 | 
			
		||||
  width: 90%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.minsize { 
 | 
			
		||||
table.minsize {
 | 
			
		||||
  width: auto !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues tr.log { 
 | 
			
		||||
  border-bottom: 1px solid #e7ebe3; 
 | 
			
		||||
table.recent-issues tr.log {
 | 
			
		||||
  border-bottom: 1px solid #e7ebe3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues th { 
 | 
			
		||||
  background-color: #e4e8E0; 
 | 
			
		||||
table.recent-issues th {
 | 
			
		||||
  background-color: #e4e8E0;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  border-color: #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues tr { 
 | 
			
		||||
table.recent-issues tr {
 | 
			
		||||
  border-left: 1px solid #d3d7cf;
 | 
			
		||||
  border-right: 1px solid #d3d7cf;
 | 
			
		||||
  border-bottom: 1px solid #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues td { 
 | 
			
		||||
table.recent-issues td {
 | 
			
		||||
  border: none;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues tfoot th { 
 | 
			
		||||
table.recent-issues tfoot th {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues tfoot th a { 
 | 
			
		||||
table.recent-issues tfoot th a {
 | 
			
		||||
  color: #000;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.recent-issues th a.px-current-page { 
 | 
			
		||||
table.recent-issues th a.px-current-page {
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.px-sort { 
 | 
			
		||||
span.px-sort {
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  font-size: 70%;
 | 
			
		||||
  white-space: nowrap;  
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  padding-left: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.px-header-title { 
 | 
			
		||||
  white-space: nowrap;  
 | 
			
		||||
span.px-header-title {
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.px-header-title a, span.px-header-title a:link, span.px-header-title a:visited, span.px-header-title a:active { 
 | 
			
		||||
span.px-header-title a, span.px-header-title a:link, span.px-header-title a:visited, span.px-header-title a:active {
 | 
			
		||||
  color: #000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Issue
 | 
			
		||||
 */
 | 
			
		||||
a.issue-c { 
 | 
			
		||||
a.issue-c {
 | 
			
		||||
  text-decoration: line-through;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre.issue-comment-text { 
 | 
			
		||||
  font-family: monospace; 
 | 
			
		||||
pre.issue-comment-text {
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
  line-height: 1.2; /* to be nice also with links */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-comment { 
 | 
			
		||||
div.issue-comment {
 | 
			
		||||
  border-left: 3px solid #8ae234;
 | 
			
		||||
  border-bottom: 1px solid #d3d7cf;
 | 
			
		||||
  border-right: 1px solid #d3d7cf;
 | 
			
		||||
  padding: 0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.issue-comment-focus { 
 | 
			
		||||
  border-right: 3px solid #8ae234 !important; 
 | 
			
		||||
.issue-comment-focus {
 | 
			
		||||
  border-right: 3px solid #8ae234 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-comment-first { 
 | 
			
		||||
div.issue-comment-first {
 | 
			
		||||
  border-top: 1px solid #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-comment-signin { 
 | 
			
		||||
div.issue-comment-signin {
 | 
			
		||||
  -moz-border-radius: 0 0 3px 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  -webkit-border-top-left-radius: 0;
 | 
			
		||||
@@ -231,11 +231,11 @@ div.issue-comment-signin {
 | 
			
		||||
  padding: 4px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-comment-signin a { 
 | 
			
		||||
div.issue-comment-signin a {
 | 
			
		||||
  color: #000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-changes { 
 | 
			
		||||
div.issue-changes {
 | 
			
		||||
  background-color: #d3d7cf;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
@@ -243,7 +243,7 @@ div.issue-changes {
 | 
			
		||||
  width: 60%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-changes-timeline { 
 | 
			
		||||
div.issue-changes-timeline {
 | 
			
		||||
  background-color: #eeeeec;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
@@ -253,7 +253,7 @@ div.issue-changes-timeline {
 | 
			
		||||
  color: #888a85;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-submit-info { 
 | 
			
		||||
div.issue-submit-info {
 | 
			
		||||
  background-color: #d3d7cf;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
@@ -261,47 +261,47 @@ div.issue-submit-info {
 | 
			
		||||
  margin-bottom: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.issue-submit-info h2 { 
 | 
			
		||||
div.issue-submit-info h2 {
 | 
			
		||||
  margin-top: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.label { 
 | 
			
		||||
span.label {
 | 
			
		||||
  color: #204a87;
 | 
			
		||||
  padding-left: 0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.label { 
 | 
			
		||||
a.label {
 | 
			
		||||
  color: #204a87;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.label { 
 | 
			
		||||
.label {
 | 
			
		||||
  color: #204a87;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.nobrk { 
 | 
			
		||||
span.nobrk {
 | 
			
		||||
 white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hr { visibility: hidden; }
 | 
			
		||||
 | 
			
		||||
hr.attach { 
 | 
			
		||||
  visibility: visible; 
 | 
			
		||||
hr.attach {
 | 
			
		||||
  visibility: visible;
 | 
			
		||||
  border: 0;
 | 
			
		||||
  background-color: #d3d7cf;
 | 
			
		||||
  color: #d3d7cf;
 | 
			
		||||
  width: 40%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textarea { 
 | 
			
		||||
textarea {
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1.title { 
 | 
			
		||||
h1.title {
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1.project-title { 
 | 
			
		||||
h1.project-title {
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
  float: right;
 | 
			
		||||
  z-index: 100;
 | 
			
		||||
@@ -310,55 +310,55 @@ h1.project-title {
 | 
			
		||||
  margin-bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.note { 
 | 
			
		||||
.note {
 | 
			
		||||
  font-size: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.smaller { 
 | 
			
		||||
.smaller {
 | 
			
		||||
  font-size: 90%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.active { 
 | 
			
		||||
span.active {
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.helptext { 
 | 
			
		||||
.helptext {
 | 
			
		||||
  font-size: 80%;
 | 
			
		||||
  color: #555753;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.container { 
 | 
			
		||||
div.container {
 | 
			
		||||
  clear: both;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.sep { 
 | 
			
		||||
.sep {
 | 
			
		||||
  margin: 0 0.3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tabs
 | 
			
		||||
 */
 | 
			
		||||
#main-tabs { 
 | 
			
		||||
#main-tabs {
 | 
			
		||||
  line-height: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#main-tabs a { 
 | 
			
		||||
#main-tabs a {
 | 
			
		||||
  background-color: #d3d7cf;
 | 
			
		||||
  -moz-border-radius: 3px 3px 0 0;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  -webkit-border-bottom-left-radius: 0;
 | 
			
		||||
  -webkit-border-bottom-right-radius: 0;
 | 
			
		||||
  padding: 4px 4px 0 4px; 
 | 
			
		||||
  padding: 4px 4px 0 4px;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
  color: #2e3436;
 | 
			
		||||
  font-weight: 600;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#main-tabs a.active { 
 | 
			
		||||
#main-tabs a.active {
 | 
			
		||||
  background-color: #a5e26a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#sub-tabs { 
 | 
			
		||||
#sub-tabs {
 | 
			
		||||
  background-color: #a5e26a;
 | 
			
		||||
  -moz-border-radius: 0 3px 3px 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
@@ -366,63 +366,63 @@ div.container {
 | 
			
		||||
  padding: 4px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#sub-tabs a { 
 | 
			
		||||
#sub-tabs a {
 | 
			
		||||
  color: #2e3436;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#sub-tabs a.active { 
 | 
			
		||||
#sub-tabs a.active {
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Tree list
 | 
			
		||||
 */
 | 
			
		||||
table.tree-list { 
 | 
			
		||||
table.tree-list {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list th { 
 | 
			
		||||
  background-color: #e4e8E0; 
 | 
			
		||||
table.tree-list th {
 | 
			
		||||
  background-color: #e4e8E0;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  border-color: #d3d7cf; 
 | 
			
		||||
  border-color: #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tr { 
 | 
			
		||||
table.tree-list tr {
 | 
			
		||||
  border-left: 1px solid #d3d7cf;
 | 
			
		||||
  border-right: 1px solid #d3d7cf;
 | 
			
		||||
  border-bottom: 1px solid #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list td { 
 | 
			
		||||
table.tree-list td {
 | 
			
		||||
  border: none;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tfoot th, table.code tfoot th { 
 | 
			
		||||
table.tree-list tfoot th, table.code tfoot th {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tfoot th a, table.code tfoot th a { 
 | 
			
		||||
table.tree-list tfoot th a, table.code tfoot th a {
 | 
			
		||||
  color: #000;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tfoot th ul, table.code tfoot th ul { 
 | 
			
		||||
table.tree-list tfoot th ul, table.code tfoot th ul {
 | 
			
		||||
  text-align: left;
 | 
			
		||||
  font-size: 85%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tr.log { 
 | 
			
		||||
  border-bottom: 1px solid #e7ebe3; 
 | 
			
		||||
table.tree-list tr.log {
 | 
			
		||||
  border-bottom: 1px solid #e7ebe3;
 | 
			
		||||
  /* background-color: #eef2ea !important; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.tree-list tr.extra { 
 | 
			
		||||
table.tree-list tr.extra {
 | 
			
		||||
/*  border-bottom: 1px solid #e7ebe3;  */
 | 
			
		||||
/*  background-color: #eef2ea !important; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table td.fileicon { 
 | 
			
		||||
table td.fileicon {
 | 
			
		||||
  width: 20px;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -452,15 +452,15 @@ table td.fileicon {
 | 
			
		||||
  padding: 2px 5px;
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  display: block;
 | 
			
		||||
  /* 
 | 
			
		||||
     if width will be 100% horizontal scrollbar will apear 
 | 
			
		||||
  /*
 | 
			
		||||
     if width will be 100% horizontal scrollbar will apear
 | 
			
		||||
     when scroll mode will be used
 | 
			
		||||
     */
 | 
			
		||||
  /*width: 100%;*/
 | 
			
		||||
  font: menu;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
  /* 
 | 
			
		||||
     it is very important, if line-height not setted or setted 
 | 
			
		||||
  /*
 | 
			
		||||
     it is very important, if line-height not setted or setted
 | 
			
		||||
     in relative units scroll will be broken in firefox
 | 
			
		||||
     */
 | 
			
		||||
  line-height: 16px;
 | 
			
		||||
@@ -480,7 +480,7 @@ table td.fileicon {
 | 
			
		||||
  color: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.disp th, table.disp td { 
 | 
			
		||||
table.disp th, table.disp td {
 | 
			
		||||
  border: none;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
}
 | 
			
		||||
@@ -488,48 +488,48 @@ table.disp th, table.disp td {
 | 
			
		||||
/**
 | 
			
		||||
 * Commit
 | 
			
		||||
 */
 | 
			
		||||
table.commit th, table.commit td { 
 | 
			
		||||
table.commit th, table.commit td {
 | 
			
		||||
  border: none;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
}
 | 
			
		||||
table.commit th { 
 | 
			
		||||
table.commit th {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
table.commit td, table.commit th { 
 | 
			
		||||
table.commit td, table.commit th {
 | 
			
		||||
  padding: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * syntax highlighting of diffs
 | 
			
		||||
 */
 | 
			
		||||
table.diff { 
 | 
			
		||||
table.diff {
 | 
			
		||||
  border-bottom: 1px solid #d3d7cf;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.diff th { 
 | 
			
		||||
  background-color: #e4e8E0; 
 | 
			
		||||
table.diff th {
 | 
			
		||||
  background-color: #e4e8E0;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  border-color: #d3d7cf; 
 | 
			
		||||
  border-color: #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
table.diff tr { 
 | 
			
		||||
table.diff tr {
 | 
			
		||||
  border-left: 1px solid #d3d7cf;
 | 
			
		||||
  border-right: 1px solid #d3d7cf;
 | 
			
		||||
  border-bottom: none;
 | 
			
		||||
  border-top: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.diff td { 
 | 
			
		||||
table.diff td {
 | 
			
		||||
  font-size: 90%;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  padding: 1px;
 | 
			
		||||
  border-color: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.diff td.diff-lc { 
 | 
			
		||||
table.diff td.diff-lc {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  padding: 1px 5px;
 | 
			
		||||
  border-color: inherit;
 | 
			
		||||
@@ -538,27 +538,27 @@ table.diff td.diff-lc {
 | 
			
		||||
  width: 3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
td.diff-a { 
 | 
			
		||||
td.diff-a {
 | 
			
		||||
  background-color: #dfd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
td.diff-r { 
 | 
			
		||||
td.diff-r {
 | 
			
		||||
  background-color: #fdd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
td.diff-a, td.diff-r, td.diff-c  { 
 | 
			
		||||
td.diff-a, td.diff-r, td.diff-c  {
 | 
			
		||||
  border-bottom: none;
 | 
			
		||||
  border-top: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.diff tr.diff-next { 
 | 
			
		||||
  background-color: #e4e8E0; 
 | 
			
		||||
table.diff tr.diff-next {
 | 
			
		||||
  background-color: #e4e8E0;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  border-color: #d3d7cf; 
 | 
			
		||||
  border-color: #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.diff tr.diff-next td { 
 | 
			
		||||
table.diff tr.diff-next td {
 | 
			
		||||
  padding: 1px 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -566,33 +566,33 @@ table.diff tr.diff-next td {
 | 
			
		||||
/**
 | 
			
		||||
 * view file content
 | 
			
		||||
 */
 | 
			
		||||
table.code { 
 | 
			
		||||
table.code {
 | 
			
		||||
  border-bottom: 1px solid #d3d7cf;
 | 
			
		||||
  border-top: 1px solid #d3d7cf;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code th { 
 | 
			
		||||
  background-color: #e4e8E0; 
 | 
			
		||||
table.code th {
 | 
			
		||||
  background-color: #e4e8E0;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  border-color: #d3d7cf; 
 | 
			
		||||
  border-color: #d3d7cf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code tr { 
 | 
			
		||||
table.code tr {
 | 
			
		||||
  border-left: 1px solid #d3d7cf;
 | 
			
		||||
  border-right: 1px solid #d3d7cf;
 | 
			
		||||
  border-bottom: none;
 | 
			
		||||
  border-top: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code td { 
 | 
			
		||||
table.code td {
 | 
			
		||||
  font-size: 90%;
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  padding: 1px;
 | 
			
		||||
  border-color: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code td.code { 
 | 
			
		||||
table.code td.code {
 | 
			
		||||
  border: none;
 | 
			
		||||
  /* Whitespace hacking from: http://ln.hixie.ch/ */
 | 
			
		||||
  white-space: pre; /* CSS2 */
 | 
			
		||||
@@ -601,12 +601,11 @@ table.code td.code {
 | 
			
		||||
  white-space: -o-pre-wrap; /* Opera 7 */
 | 
			
		||||
  white-space: -pre-wrap; /* Opera 4-6 */
 | 
			
		||||
  white-space: pre-wrap; /* CSS 2.1 */
 | 
			
		||||
  white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ 
 | 
			
		||||
  word-wrap: break-word; /* IE */ 
 | 
			
		||||
  word-wrap: break-word; /* IE */
 | 
			
		||||
  padding-left: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code td.code-lc { 
 | 
			
		||||
table.code td.code-lc {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  padding: 1px 5px;
 | 
			
		||||
  border-color: inherit;
 | 
			
		||||
@@ -615,7 +614,7 @@ table.code td.code-lc {
 | 
			
		||||
  width: 3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.code td.code-lc a { 
 | 
			
		||||
table.code td.code-lc a {
 | 
			
		||||
  color: #555753;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
@@ -623,7 +622,7 @@ table.code td.code-lc a {
 | 
			
		||||
/**
 | 
			
		||||
 * Download
 | 
			
		||||
 */
 | 
			
		||||
div.download-file { 
 | 
			
		||||
div.download-file {
 | 
			
		||||
  padding: 1em 1em 1em 3em;
 | 
			
		||||
  background: url("../img/down-large.png");
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
@@ -636,14 +635,14 @@ div.download-file {
 | 
			
		||||
  -webkit-border-radius: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
table.download { 
 | 
			
		||||
table.download {
 | 
			
		||||
  margin-top: 1.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Wiki
 | 
			
		||||
 */
 | 
			
		||||
p.desc { 
 | 
			
		||||
p.desc {
 | 
			
		||||
  background-color: #eeeeec;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
@@ -651,7 +650,7 @@ p.desc {
 | 
			
		||||
  width: 60%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.old-rev { 
 | 
			
		||||
div.old-rev {
 | 
			
		||||
  padding: 1em 1em 0.1em 1em;
 | 
			
		||||
  margin-bottom: 1em;
 | 
			
		||||
  background-color: #bbe394;
 | 
			
		||||
@@ -660,7 +659,7 @@ div.old-rev {
 | 
			
		||||
  -webkit-border-radius: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.deprecated-page { 
 | 
			
		||||
div.deprecated-page {
 | 
			
		||||
  padding: 1em 1em 0.1em 3em;
 | 
			
		||||
  margin-bottom: 1em;
 | 
			
		||||
  background: url("../img/warning-large.png");
 | 
			
		||||
@@ -674,16 +673,16 @@ div.deprecated-page {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.delp { 
 | 
			
		||||
  float: right; 
 | 
			
		||||
  position: relative; 
 | 
			
		||||
.delp {
 | 
			
		||||
  float: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.delp a { 
 | 
			
		||||
.delp a {
 | 
			
		||||
  color: #a00;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#branding { 
 | 
			
		||||
#branding {
 | 
			
		||||
  float: right;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  margin-right: -10px;
 | 
			
		||||
@@ -693,7 +692,7 @@ div.deprecated-page {
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  padding-right: 20px;
 | 
			
		||||
  padding-left: 0px;
 | 
			
		||||
  background-color: #eeeeec; 
 | 
			
		||||
  background-color: #eeeeec;
 | 
			
		||||
  -moz-border-radius: 3px 0 0 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  -webkit-border-top-right-radius: 0;
 | 
			
		||||
@@ -705,15 +704,98 @@ div.deprecated-page {
 | 
			
		||||
  background-position: top right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#branding a { 
 | 
			
		||||
#branding a {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#branding a:visited { 
 | 
			
		||||
#branding a:visited {
 | 
			
		||||
  color: #777;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ft { 
 | 
			
		||||
#ft {
 | 
			
		||||
  padding: 0px;
 | 
			
		||||
  margin: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * main menu
 | 
			
		||||
 */
 | 
			
		||||
#main-menu {
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  margin: 5px 0 13px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#main-menu > li {
 | 
			
		||||
  list-style-type: none;
 | 
			
		||||
  margin-left: 5px;
 | 
			
		||||
  padding-left: 5px;
 | 
			
		||||
  border-left: 1px solid black;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  line-height: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#main-menu > li:first-child {
 | 
			
		||||
  margin-left: 0;
 | 
			
		||||
  padding-left: 0;
 | 
			
		||||
  border-left: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * project list popup
 | 
			
		||||
 */
 | 
			
		||||
#project-list {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  padding-left: 0 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list > a {
 | 
			
		||||
  padding-left: 5px;
 | 
			
		||||
  padding-right: 5px;
 | 
			
		||||
  margin-top: -3px;
 | 
			
		||||
  padding-top: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list + li {
 | 
			
		||||
  margin-left: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list ul {
 | 
			
		||||
  display: none;
 | 
			
		||||
  background: #A5E26A;
 | 
			
		||||
  border-top: 0;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  padding: 5px 5px 5px 20px;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  z-index: 1000;
 | 
			
		||||
  top: 1.1em;
 | 
			
		||||
  -moz-border-radius: 0 3px 3px 3px;
 | 
			
		||||
  border-radius: 0 3px 3px 3px;
 | 
			
		||||
  -moz-box-shadow: 0 10px 20px #333;
 | 
			
		||||
  -webkit-box-shadow: 0 10px 20px #333;
 | 
			
		||||
  box-shadow: 0 10px 20px #333;
 | 
			
		||||
  max-height: 400px;
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list ul li {
 | 
			
		||||
  padding: 5px;
 | 
			
		||||
  padding-left: 0;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  font-size: 0.95em;
 | 
			
		||||
  list-style-type: square;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list ul li a {
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list:hover > a {
 | 
			
		||||
  background: #A5E26A;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#project-list:hover a {
 | 
			
		||||
  color: #2E3436;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user