Exemple #1
0
 /**
  * 获取所有的文章列表,以存放在base_dir目录,以chapt开头的目录
  */
 private function _getAllArticleList()
 {
     if (self::$_allArticleList == NULL) {
         $articleList = glob($this->base_dir . "/chapt*/*");
         sort($articleList);
         self::$_allArticleList = $articleList;
     }
     return self::$_allArticleList;
 }
Exemple #2
0
<?php

require_once "../lib/common.inc.php";
require_once "../lib/SimpieView.php";
require_once "../models/BookPage.php";
$page_name = isset($_GET['p']) && $_GET['p'] ? trim($_GET['p']) : 'index';
try {
    ensure_page_name_safe($page_name);
    $page = new BookPage($page_name);
    // 线下模式不显示修改时间,因为从Github读取需要的时间太长
    $page_last_update_time = IN_PROD_MODE ? $page->getLastUpdatedAt(true, "Y-m-d H:h") : false;
    // 如果获取修改时间失败,则先暂时禁用缓存,否则无法重新获取最后修改时间
    if ($page_last_update_time === false) {
        PageCache::disable();
    }
    $view = new SimpieView($page->toHtml(), "../templates/layout/book.php", SimpieView::IS_RAW_TEXT);
    $view->render(array('title' => $page->getTitle(), 'page' => $page, 'chapt_list' => BookPage::getChapterList(), 'is_detail_view' => $page_name != 'index', 'page_last_update_time' => $page_last_update_time));
} catch (PageNotFoundException $e) {
    // 尝试查找是否是因为章节调整导致地址发生变化导致的404
    // 通过永久重定向解决搜索引擎和错误地址的问题
    if ($similar_page_name = BookPage::getMostSimilarPageFromPageName($page_name)) {
        redirect_to("/book?p=" . $similar_page_name, 301);
    }
    header($_SERVER['SERVER_PROTOCOL'] . " 404 Not Found");
    header("Status: 404 Not Found");
    $view = 404;
    $title = "Page Not Found";
    $view = new SimpieView("../templates/book_page_{$view}.php", "../templates/layout/book.php");
    $view->render(array('book_page' => $page_name, 'exception' => $e, 'title' => $title, 'rev' => $rev, 'exception' => $e, 'is_detail_view' => true, 'chapt_list' => $chapt_list));
}
Exemple #3
0
<?php

require_once "../lib/common.inc.php";
require_once "../lib/SimpieView.php";
require_once "../models/BookPage.php";
$pages = BookPage::getFlatPagesArrayForPrint();
// 不需要index页面
array_shift($pages);
// 处理页面中的header,PDF生成工具可以根据标题级别来生成目录,将所有目录的层级缩短
$view = new SimpieView('../templates/portable/print.php');
$view->render(array('pages' => $pages));
Exemple #4
0
<?php

require_once "../lib/common.inc.php";
require_once "../lib/FeedWriter/FeedItem.php";
require_once "../lib/FeedWriter/FeedWriter.php";
require_once "../lib/SimpieView.php";
require_once "../models/News.php";
require_once "../models/BookPage.php";
$news = News::findAll();
$book_pages = BookPage::getFlatPagesArray();
/** Merge the pages **/
$pages = array_merge($news, $book_pages);
/** Sort Desc **/
function _sort_pages($page1, $page2)
{
    if ($page1->getLastUpdatedAt() == $page2->getLastUpdatedAt()) {
        return 0;
    }
    // Desc
    return $page1->getLastUpdatedAt() > $page2->getLastUpdatedAt() ? -1 : 1;
}
usort($pages, '_sort_pages');
/** Start Feed Output **/
$last_updated_at = null;
$feed = new FeedWriter(RSS2);
$feed->setTitle(SITE_NAME);
$feed->setLink(url_for("/", IS_ABSOLUTE_URL));
$feed->setDescription(SITE_DESC);
$feed->setChannelElement('language', 'zh-cn');
// get flat pages
foreach ($pages as $page) {
Exemple #5
0
<?php

require_once "../../web/lib/common.inc.php";
require_once "../../web/lib/SimpieView.php";
require_once "../../web/lib/TIPI.php";
require_once "../../web/models/BookPage.php";
require_once dirname(__FILE__) . "/TipiCHM.php";
set_time_limit(0);
$pages = BookPage::getFlatPagesArrayForPrint();
$view = new SimpieView('../../web/templates/chm/print.php');
$chapt_list = BookPage::getChapterList();
#array_shift($chapt_list);
$data = array('page_name' => 'ch/home', 'list' => $chapt_list, 'title' => 'TIPI');
define('ROOT', dirname(__FILE__) . "/");
$filename = TIPI::getVersion();
$tipichm = new TipiCHM($filename, $data);
/* 执行HTML help Workshop的complie后 */
if ($_GET['complied'] == 1) {
    $tipichm->copyCHM();
    die;
}
$tipichm->copyCSS(ROOT_PATH . "/css/book.css");
$tipichm->copyCSS(ROOT_PATH . "/css/main.css");
$tipichm->copyCSS(ROOT_PATH . "/css/chm.css");
$tipichm->copyCSS(ROOT_PATH . "/css/highlight.css");
$tipichm->copyImages(ROOT_PATH . "/images/get-lastest.png");
$tipichm->createHome();
$tipichm->copyImagesOfDiretory();
$tipichm->createFiles($view, $pages);
$tipichm->createHHC();
$tipichm->createHHK();
Exemple #6
0
<?php

require_once dirname(__FILE__) . "/lib/SimpieCache.php";
require_once dirname(__FILE__) . "/lib/TIPI.php";
require_once dirname(__FILE__) . "/lib/GithubVersionManager.php";
require_once dirname(__FILE__) . "/models/BookPage.php";
/* ---------------------------------------------------------------------------
用于进行一些基本的配置及初始化
----------------------------------------------------------------------------*/
/**
 * 通过prefix的方式控制版本,因为所有的内容都和发布的TIPI版本一致。
 * 这样在上线新版本时的缓存也能自动清除,唯一的问题是历史版本的缓存会继续保留
 * 不过对于TIPI来说并没有什么问题
 */
SimpieCache::setGlobalCacheFilePrefix(TIPI::getVersion());
/**
 * 用户获取各图书页面的更新和修改历史信息
 */
BookPage::setVersionManger(new GithubVersionManager(GITHUB_API_USER, GITHUB_API_REPOS, GITHUB_API_BRANCH));
Exemple #7
0
<?php

require_once "../lib/common.inc.php";
require_once "../lib/SimpieView.php";
require_once "../models/BookPage.php";

$page_name = (isset($_GET['p']) && $_GET['p']) ? trim($_GET['p']) : 'index';

try
{
	ensure_page_name_safe($page_name);

	// 章节列表
	$chapt_list = BookPage::getChapterList();

	$page = new BookPage($page_name);
	$page_file = $page->getPageFilePath();

	// 是详细页面还是索引目录页,目录页不需要侧边栏
	$is_detail_view = ($page_name != 'index');


	$view = new SimpieView($page->toHtml(), "../templates/layout/book.php", SimpieView::IS_RAW_TEXT);
	$view->render(array(
		'title' => $page->getTitle(),
		'page'  => $page,
		'chapt_list' => $chapt_list,
		'is_detail_view' => $is_detail_view,
	));
}
catch(PageNotFoundException $e)