当前位置: 首页>>代码示例>>PHP>>正文


PHP TBGContext::getCurrentProject方法代码示例

本文整理汇总了PHP中TBGContext::getCurrentProject方法的典型用法代码示例。如果您正苦于以下问题:PHP TBGContext::getCurrentProject方法的具体用法?PHP TBGContext::getCurrentProject怎么用?PHP TBGContext::getCurrentProject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TBGContext的用法示例。


在下文中一共展示了TBGContext::getCurrentProject方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: componentPagination

 public function componentPagination()
 {
     $this->currentpage = ceil($this->offset / $this->ipp) + 1;
     $this->pagecount = ceil($this->resultcount / $this->ipp);
     $parameters = array();
     foreach ($this->filters as $key => $filter) {
         if (is_array($filter)) {
             foreach ($filter as $subkey => $subfilter) {
                 if (is_array($subfilter)) {
                     foreach ($subfilter as $subsubkey => $subsubfilter) {
                         $parameters[] = "filters[{$key}][{$subkey}][{$subsubkey}]=" . urlencode($subsubfilter);
                     }
                 } else {
                     $parameters[] = "filters[{$key}][{$subkey}]=" . urlencode($subfilter);
                 }
             }
         } else {
             $parameters[] = "filters[{$key}]=" . urlencode($filter);
         }
     }
     $parameters[] = 'template=' . $this->templatename;
     $parameters[] = 'template_parameter=' . $this->template_parameter;
     $parameters[] = 'searchterm=' . $this->searchterm;
     $parameters[] = 'groupby=' . $this->groupby;
     $parameters[] = 'grouporder=' . $this->grouporder;
     $parameters[] = 'issues_per_page=' . $this->ipp;
     $route = TBGContext::isProjectContext() ? TBGContext::getRouting()->generate('project_search_paginated', array('project_key' => TBGContext::getCurrentProject()->getKey())) : TBGContext::getRouting()->generate('search_paginated');
     $this->route = $route;
     $this->parameters = join('&', $parameters);
 }
开发者ID:ronaldbroens,项目名称:thebuggenie,代码行数:30,代码来源:actioncomponents.class.php

示例2: componentLeftmenu

 public function componentLeftmenu()
 {
     $this->show_article_options = (bool) ($this->article instanceof TBGWikiArticle);
     $this->links_target_id = TBGContext::isProjectContext() ? TBGContext::getCurrentProject()->getID() : 0;
     $this->links = TBGPublish::getModule()->getMenuItems($this->links_target_id);
     $this->user_drafts = TBGPublish::getModule()->getUserDrafts();
     $this->whatlinkshere = $this->article instanceof TBGWikiArticle ? $this->article->getLinkingArticles() : null;
 }
开发者ID:ronaldbroens,项目名称:thebuggenie,代码行数:8,代码来源:actioncomponents.class.php

示例3: runProjectCommits

 public function runProjectCommits(TBGRequest $request)
 {
     $this->selected_project = TBGProject::getByKey($request['project_key']);
     TBGContext::setCurrentProject($this->selected_project);
     if (TBGContext::getModule('vcs_integration')->getSetting('vcs_mode_' . TBGContext::getCurrentProject()->getID()) == TBGVCSIntegration::MODE_DISABLED) {
         return $this->return404(TBGContext::getI18n()->__('VCS Integration has been disabled for this project'));
     }
     $offset = $request->getParameter('offset', 0);
     $this->commits = TBGVCSIntegrationCommit::getByProject($this->selected_project->getID(), 40, $offset);
     if ($offset) {
         return $this->renderJSON(array('content' => $this->getTemplateHTML('vcs_integration/projectcommits', array('commits' => $this->commits, 'selected_project' => $this->selected_project)), 'offset' => $offset + 40));
     }
 }
开发者ID:oparoz,项目名称:thebuggenie,代码行数:13,代码来源:actions.class.php

示例4: link_tag

    ?>
</div>
												<?php 
    echo link_tag(make_url('my_reported_issues'), image_tag('icon_savedsearch.png') . __('Issues reported by me'));
    ?>
												<?php 
    echo link_tag(make_url('my_assigned_issues'), image_tag('icon_savedsearch.png') . __('Open issues assigned to me'));
    ?>
												<?php 
    echo link_tag(make_url('my_teams_assigned_issues'), image_tag('icon_savedsearch.png') . __('Open issues assigned to my teams'));
    ?>
												<?php 
    foreach ($tbg_user->getStarredIssues() as $issue) {
        ?>
													<?php 
        if (!TBGContext::isProjectContext() || $issue->getProject()->getID() != TBGContext::getCurrentProject()->getID()) {
            continue;
        }
        ?>
													<?php 
        $link_text = image_tag('star_small.png');
        if ($issue->isBlocking()) {
            $link_text .= image_tag('icon_important.png', array('style' => 'margin-right: 5px;', 'title' => __('This issue is blocking the next release')));
        }
        $link_text .= $issue->getIssueType()->getName() . ' ' . $issue->getFormattedIssueNo(true) . '<br>';
        $link_text .= strlen($issue->getTitle()) > 43 ? substr($issue->getTitle(), 0, 40) . '...' : $issue->getTitle();
        $classes = $issue->isClosed() ? 'issue_closed' : '';
        ?>
													<?php 
        echo link_tag(make_url('viewissue', array('project_key' => $issue->getProject()->getKey(), 'issue_no' => $issue->getFormattedIssueNo())), $link_text, array('class' => $classes));
        ?>
开发者ID:ronaldbroens,项目名称:thebuggenie,代码行数:31,代码来源:header.inc.php

示例5: link_tag

	<?php 
    echo link_tag($menuitem['url'], $menuitem['title'], array('title' => $menuitem['title']));
}
if ($tbg_user->canEditProjectDetails($selected_project)) {
    ?>
	<?php 
    if ($selected_project->isBuildsEnabled()) {
        ?>
		<?php 
        echo link_tag(make_url('project_release_center', array('project_key' => TBGContext::getCurrentProject()->getKey())), __('Release center'), $tbg_response->getPage() == 'project_release_center' ? array('class' => 'selected') : array());
        ?>
	<?php 
    }
    ?>
	<?php 
    echo link_tag(make_url('project_settings', array('project_key' => TBGContext::getCurrentProject()->getKey())), __('Settings'), $tbg_response->getPage() == 'project_settings' ? array('class' => 'selected') : array());
    ?>
	<?php 
    if (!$submenu && $tbg_response->getPage() == 'project_settings') {
        ?>
		<?php 
        if (!isset($selected_tab)) {
            $selected_tab = 'info';
        }
        ?>
		<ul class="simple_list" id="project_config_menu">
			<li id="tab_information"<?php 
        if ($selected_tab == 'info') {
            ?>
 class="selected"<?php 
        }
开发者ID:oparoz,项目名称:thebuggenie,代码行数:31,代码来源:_projectinfolinks.inc.php

示例6: __

<div class="article">
	<div class="header">Special:<?php 
echo $projectnamespace != '' ? "<span class='faded_out'>{$projectnamespace}</span>" : '';
?>
All Pages</div>
		<div class="greybox" style="margin: 15px;">
			<?php 
if (TBGContext::isProjectContext()) {
    ?>
				<?php 
    echo __('Note: This page lists all articles for "%project_name". For a list of global articles, see %all_pages', array('%project_name' => TBGContext::getCurrentProject()->getName(), '%all_pages' => link_tag(make_url('publish_article', array('article_name' => "Special:AllPages")), 'Special:AllPages')));
    ?>
			<?php 
} else {
    ?>
				<?php 
    echo __('Note: This page lists all articles in the global scope. For a list of project articles, see the corresponding "All pages" for that specific project');
    ?>
			<?php 
}
?>
		</div>
	<p>
		<?php 
echo __('Below is a listing of all pages.');
?>
	</p>
	<?php 
include_template('publish/articleslist', compact('articles'));
?>
</div>
开发者ID:oparoz,项目名称:thebuggenie,代码行数:31,代码来源:_specialallpages.inc.php

示例7: __

	<ShortName><?php 
echo TBGContext::isProjectContext() ? __('%project_name% search', array('%project_name%' => TBGContext::getCurrentProject()->getName())) : __('%site_name% search', array('%site_name%' => TBGSettings::getTBGname()));
?>
</ShortName>
	<LongName><?php 
echo TBGContext::isProjectContext() ? __('%project_name% search', array('%project_name%' => TBGContext::getCurrentProject()->getName())) : __('%site_name% search', array('%site_name%' => TBGSettings::getTBGname()));
?>
</LongName>
	<Description><?php 
echo TBGContext::isProjectContext() ? __('%project_name% search', array('%project_name%' => TBGContext::getCurrentProject()->getName())) : __('%site_name% search', array('%site_name%' => TBGSettings::getTBGname()));
?>
</Description>
	<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAIgAAACIBB7P0uQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKISURBVDiNpZNPiE1xFMc%2F5%2F7ufX%2B853nzZh6G%2BYPBaESDovxPilKabEhZsJOFLBRjITuFiAULkqRYsLAxooiEGAzR%2BPcmRmP8mWnejDf3vXfvu8fmjaiRhbM5ncX5dL6n71dUlf8p%2B%2FehslIS8cnsTFRS7%2FuUst94le3mTi6nT%2F8JmFgv06Yv42Zjc3pqQ%2FUikukw99tv8LZj0E1OkmMDPdo6GsACEJFQopozk2Yyta7JZt2aDbif6tm19ShzlkWiTYvZm0zL7r8CQlFaYklWhmNQ1M8MeZ1s2bSNh239LF64lJomqJnDAceRFaMCii4NhWHwCqDAs54T9FlX0bGv6Xj%2BmHQdjK8jWlHNcRGpEBH5BRCRFOBlv8BALwwPQXbI5dabVqzG03TcHSA%2FBJGxEK9iLrAf2CcizSNPXOc4TktvxuscN4FZ8RTYIfB9sG2YvxYuH4aqGiAAYDmQBw4B2Kp6XkR6ReRs1xP1bAfHL0B6CsTGQSEPue9hd%2Fa0RWKnXtrFxr7Zve%2FMtVKp5IhIkbKRDDADOBaK0N2wAF3Ygi7dTBCvsPpOXWjVN59v65Hr03XHGYJYwr4CbATMiA8U6AcuFfN0vW9nfXcnlV6e2rmrgtTX6EXaug5ixgREoogJ%2BV40Gl3iuu5lG0BVAxH5AfQBMcAr5qg1xoQsUyLTlaHjFNnBTH3MC3%2FoH%2FyOgjsfaEZVR2RsB9oSicRJYDNw1hhzXyxexFN8C0dsf8%2B5ZH7eatqADUAjYOT3MImIKV%2BQBmqBfZZleUEQ3AMmWDY%2FAp%2FXwAMgo6reH2FS1VJZig8MA4%2BMMZkgCLoBO%2FDJAT3AR1X1AGS0OJedZgMOECl3gAKQA3wtL%2F4EbzL%2FhCjT%2FIEAAAAASUVORK5CYII%3D</Image>
	<Url type="text/html" template="<?php 
echo TBGContext::isProjectContext() ? make_url('project_issues', array('project_key' => TBGContext::getCurrentProject()->getKey()), false) : make_url('search', array(), false);
?>
?filters[text][operator]=%3A&amp;filters[text][value]={searchTerms}"/>
	<Url type="application/x-suggestions+json" template="<?php 
echo TBGContext::isProjectContext() ? make_url('project_quicksearch', array('project_key' => TBGContext::getCurrentProject()->getKey(), 'format' => 'json'), false) : make_url('quicksearch', array('format' => 'json'), false);
?>
?filters[text][operator]=%3A&amp;filters[text][value]={searchTerms}"/>
	<AdultContent>false</AdultContent>
	<OutputEncoding><?php 
echo TBGContext::getI18n()->getCharset();
?>
</OutputEncoding>
	<Contact>support@thebuggenie.com</Contact>
	<Query role="example" searchTerms="opensearch"/>
	<Attribution>No copyright</Attribution>
	<SyndicationRight>open</SyndicationRight>
</OpenSearchDescription>
开发者ID:ronaldbroens,项目名称:thebuggenie,代码行数:31,代码来源:opensearch.xml.php

示例8: componentSpecialAllTemplates

 public function componentSpecialAllTemplates()
 {
     $this->articles = TBGArticlesTable::getTable()->getAllTemplates(TBGContext::getCurrentProject());
 }
开发者ID:oparoz,项目名称:thebuggenie,代码行数:4,代码来源:actioncomponents.class.php

示例9: __

			<?php 
        }
        ?>
		<?php 
    }
    ?>
		<?php 
    if ($resultcount - $cc > 0) {
        ?>
			<li class="find_more_issues last">
				<span class="informal"><?php 
        echo __('See %num more issues ...', array('%num' => $resultcount - $cc));
        ?>
</span>
				<div class="hidden url"><?php 
        echo TBGContext::isProjectContext() ? make_url('project_issues', array('project_key' => TBGContext::getCurrentProject()->getKey())) : make_url('search');
        ?>
?fs[text][v]=<?php 
        echo $searchterm;
        ?>
&fs[text][o]=<?php 
        echo urlencode('=');
        ?>
</div>
			</li>
		<?php 
    }
    ?>
	<?php 
} else {
    ?>
开发者ID:oparoz,项目名称:thebuggenie,代码行数:31,代码来源:quicksearch.html.php

示例10: isset

<?php

$article_name = isset($article_name) ? $article_name : '';
if (!TBGContext::isProjectContext() || TBGContext::isProjectContext() && mb_strtolower($article_name) != mb_strtolower(TBGContext::getCurrentProject()->getKey() . ':mainpage')) {
    if (TBGContext::isProjectContext()) {
        $tbg_response->addBreadcrumb(TBGPublish::getModule()->getMenuTitle(), make_url('publish_article', array('article_name' => TBGContext::getCurrentProject()->getKey() . ':MainPage')), tbg_get_breadcrumblinks('project_summary', TBGContext::getCurrentProject()));
    } else {
        $tbg_response->addBreadcrumb(TBGPublish::getModule()->getMenuTitle(), make_url('publish_article', array('article_name' => 'MainPage')), tbg_get_breadcrumblinks('main_links'));
    }
    $items = explode(':', $article_name);
    $bcpath = array_shift($items);
    if (mb_strtolower($bcpath) == 'category') {
        $tbg_response->addBreadcrumb(__('Categories'));
        if (TBGContext::isProjectContext()) {
            $bcpath .= ":" . array_shift($items);
        }
    } elseif (!TBGContext::isProjectContext() && mb_strtolower($bcpath) != 'mainpage') {
        $tbg_response->addBreadcrumb($bcpath, make_url('publish_article', array('article_name' => $bcpath)));
    }
    foreach ($items as $bc_name) {
        $bcpath .= ":" . $bc_name;
        $tbg_response->addBreadcrumb($bc_name, make_url('publish_article', array('article_name' => $bcpath)));
    }
} else {
    $tbg_response->addBreadcrumb(TBGPublish::getModule()->getMenuTitle(), make_url('publish_article', array('article_name' => TBGContext::getCurrentProject()->getKey() . ':MainPage')), tbg_get_breadcrumblinks('project_summary', TBGContext::getCurrentProject()));
}
开发者ID:oparoz,项目名称:thebuggenie,代码行数:26,代码来源:_wikibreadcrumbs.inc.php

示例11: link_tag

<?php

/*
 * Generate link for browser
 */
$link_repo = TBGContext::getModule('vcs_integration')->getSetting('browser_url_' . TBGContext::getCurrentProject()->getID());
if (TBGContext::getModule('vcs_integration')->getSetting('vcs_mode_' . TBGContext::getCurrentProject()->getID()) != TBGVCSIntegration::MODE_DISABLED) {
    echo link_tag(make_url('vcs_commitspage', array('project_key' => TBGContext::getCurrentProject()->getKey())), __('Commits'), $tbg_response->getPage() == 'vcs_commitspage' ? array('class' => 'selected') : array());
    if (!$submenu && $tbg_response->getPage() == 'vcs_commitspage') {
        ?>
			<ul class="simple_list">
				<li><a href="<?php 
        echo $link_repo;
        ?>
" target="_blank"><?php 
        echo __('Browse source code');
        ?>
</a></li>
			</ul>
		<?php 
    }
}
开发者ID:oparoz,项目名称:thebuggenie,代码行数:22,代码来源:_menustriplinks.inc.php

示例12: __

<div class="article">
	<div class="header">Special:<?php 
echo $projectnamespace != '' ? "<span class='faded_out'>{$projectnamespace}</span>" : '';
?>
Uncategorized Categories</div>
	<?php 
if (TBGContext::isProjectContext()) {
    ?>
		<div class="greybox" style="margin: 15px;">
			<?php 
    echo __('Note: This page lists all categories without any parent categories in "%project_name". For a list of global categories with no parent categories, see %uncategorized_categories', array('%project_name' => TBGContext::getCurrentProject()->getName(), '%uncategorized_categories' => link_tag(make_url('publish_article', array('article_name' => "Special:UncategorizedCategories")), 'Special:UncategorizedCategories')));
    ?>
		</div>
	<?php 
}
?>
	<p>
		<?php 
echo __('Below is a listing of categories that have no parent categories.');
?>
	</p>
	<?php 
include_template('publish/articleslist', array('articles' => $articles, 'include_redirects' => false));
?>
</div>
开发者ID:oparoz,项目名称:thebuggenie,代码行数:25,代码来源:_specialuncategorizedcategories.inc.php

示例13: componentBuild

 public function componentBuild()
 {
     if (!isset($this->build)) {
         $this->build = new TBGBuild();
         $this->build->setProject(TBGContext::getCurrentProject());
         $this->build->setName(TBGContext::getI18n()->__('%project_name version 0.0.0', array('%project_name' => $this->project->getName())));
         if (TBGContext::getRequest()->getParameter('edition_id') && ($edition = TBGContext::factory()->TBGEdition(TBGContext::getRequest()->getParameter('edition_id')))) {
             $this->build->setEdition($edition);
         }
     }
 }
开发者ID:oparoz,项目名称:thebuggenie,代码行数:11,代码来源:actioncomponents.class.php

示例14: if

    echo $mode;
    ?>
" class="focusable" onchange="TBG.Search.bulkChanger('<?php 
    echo $mode;
    ?>
'); if ($(this).getValue() == 'new') { ['bulk_action_assign_milestone_top_name', 'bulk_action_assign_milestone_bottom_name'].each(function(element) { $(element).show(); }); } else { ['bulk_action_assign_milestone_top_name', 'bulk_action_assign_milestone_bottom_name'].each(function(element) { $(element).hide(); }); }">
						<option value="0"><?php 
    echo __('No milestone');
    ?>
</option>
						<option value="new"><?php 
    echo __('Create new milestone from selected issues');
    ?>
</option>
						<?php 
    foreach (TBGContext::getCurrentProject()->getMilestonesForIssues() as $milestone_id => $milestone) {
        ?>
							<option id="bulk_action_assign_milestone_<?php 
        echo $mode;
        ?>
_<?php 
        echo $milestone_id;
        ?>
" value="<?php 
        echo $milestone_id;
        ?>
"><?php 
        echo $milestone->getName();
        ?>
</option>
						<?php 
开发者ID:oparoz,项目名称:thebuggenie,代码行数:31,代码来源:_bulkactions.inc.php

示例15: addToCriteria

 /**
  *
  * @param \b2db\Criteria $crit
  * @param array|TBGSearchFilter $filters
  * @param \b2db\Criterion $ctn
  * @return null
  */
 public function addToCriteria($crit, $filters, $ctn = null)
 {
     $filter_key = $this->getFilterKey();
     if (in_array($this['operator'], array('=', '!=', '<=', '>=', '<', '>'))) {
         if ($filter_key == 'text') {
             if ($this['value'] != '') {
                 $searchterm = mb_strpos($this['value'], '%') !== false ? $this['value'] : "%{$this['value']}%";
                 if ($this['operator'] == '=') {
                     if ($ctn === null) {
                         $ctn = $crit->returnCriterion(TBGIssuesTable::TITLE, $searchterm, Criteria::DB_LIKE);
                     }
                     $ctn->addOr(TBGIssuesTable::DESCRIPTION, $searchterm, Criteria::DB_LIKE);
                     $ctn->addOr(TBGIssuesTable::REPRODUCTION_STEPS, $searchterm, Criteria::DB_LIKE);
                     $ctn->addOr(TBGIssueCustomFieldsTable::OPTION_VALUE, $searchterm, Criteria::DB_LIKE);
                 } else {
                     if ($ctn === null) {
                         $ctn = $crit->returnCriterion(TBGIssuesTable::TITLE, $searchterm, Criteria::DB_NOT_LIKE);
                     }
                     $ctn->addWhere(TBGIssuesTable::DESCRIPTION, $searchterm, Criteria::DB_NOT_LIKE);
                     $ctn->addWhere(TBGIssuesTable::REPRODUCTION_STEPS, $searchterm, Criteria::DB_NOT_LIKE);
                     $ctn->addOr(TBGIssueCustomFieldsTable::OPTION_VALUE, $searchterm, Criteria::DB_NOT_LIKE);
                 }
                 return $ctn;
             }
         } elseif (in_array($filter_key, self::getValidSearchFilters())) {
             if ($filter_key == 'subprojects') {
                 if (TBGContext::isProjectContext()) {
                     if ($ctn === null) {
                         $ctn = $crit->returnCriterion(TBGIssuesTable::PROJECT_ID, TBGContext::getCurrentProject()->getID());
                     }
                     if ($this->hasValue()) {
                         foreach ($this->getValues() as $value) {
                             switch ($value) {
                                 case 'all':
                                     $subprojects = TBGProject::getIncludingAllSubprojectsAsArray(TBGContext::getCurrentProject());
                                     foreach ($subprojects as $subproject) {
                                         if ($subproject->getID() == TBGContext::getCurrentProject()->getID()) {
                                             continue;
                                         }
                                         $ctn->addOr(TBGIssuesTable::PROJECT_ID, $subproject->getID());
                                     }
                                     break;
                                 case 'none':
                                 case '':
                                     break;
                                 default:
                                     $ctn->addOr(TBGIssuesTable::PROJECT_ID, (int) $value);
                                     break;
                             }
                         }
                     }
                     return $ctn;
                 }
             } elseif (in_array($filter_key, array('build', 'edition', 'component'))) {
                 switch ($filter_key) {
                     case 'component':
                         $tbl = TBGIssueAffectsComponentTable::getTable();
                         $fk = TBGIssueAffectsComponentTable::ISSUE;
                         break;
                     case 'edition':
                         $tbl = TBGIssueAffectsEditionTable::getTable();
                         $fk = TBGIssueAffectsEditionTable::ISSUE;
                         break;
                     case 'build':
                         $tbl = TBGIssueAffectsBuildTable::getTable();
                         $fk = TBGIssueAffectsBuildTable::ISSUE;
                         break;
                 }
                 $crit->addJoin($tbl, $fk, TBGIssuesTable::ID, array(array($tbl->getB2DBAlias() . '.' . $filter_key, $this->getValues())), \b2db\Criteria::DB_INNER_JOIN);
                 return null;
             } else {
                 if ($filter_key == 'project_id' && in_array('subprojects', $filters)) {
                     return null;
                 }
                 $values = $this->getValues();
                 $num_values = 0;
                 if ($filter_key == 'status') {
                     if ($this->hasValue('open')) {
                         $c = $crit->returnCriterion(TBGIssuesTable::STATE, TBGIssue::STATE_OPEN);
                         $num_values++;
                     }
                     if ($this->hasValue('closed')) {
                         $num_values++;
                         if (isset($c)) {
                             $c->addWhere(TBGIssuesTable::STATE, TBGIssue::STATE_CLOSED);
                         } else {
                             $c = $crit->returnCriterion(TBGIssuesTable::STATE, TBGIssue::STATE_CLOSED);
                         }
                     }
                     if (isset($c)) {
                         if (count($values) == $num_values) {
                             return $c;
                         } else {
//.........这里部分代码省略.........
开发者ID:oparoz,项目名称:thebuggenie,代码行数:101,代码来源:TBGSearchFilter.class.php


注:本文中的TBGContext::getCurrentProject方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。