├── src
├── assets
│ ├── .gitkeep
│ ├── images
│ │ ├── logo.png
│ │ ├── opml.png
│ │ ├── rss.png
│ │ ├── plurk.png
│ │ ├── twitter.png
│ │ ├── weibo.png
│ │ ├── MCPD_1372.png
│ │ ├── MCTS_1370.png
│ │ ├── facebook.png
│ │ ├── rssButton.png
│ │ ├── googleplus.png
│ │ └── MVP_FullColor_ForBlog.jpg
│ ├── fonts
│ │ └── glyphicons-halflings-regular.woff
│ ├── scripts
│ │ ├── zh-tw.res.axd
│ │ ├── shActivator.js
│ │ ├── 02-jquery.cookie.js
│ │ ├── 05-json2.min.js
│ │ ├── shAutoloader.js
│ │ ├── jquery.lazyload.mini.js
│ │ ├── 04-jquery-jtemplates.js
│ │ ├── jquery.fancybox.pack.js
│ │ ├── blog.js
│ │ └── bootstrap.min.js
│ └── styles
│ │ ├── responsive.css
│ │ ├── shThemeDefault.css
│ │ ├── Global.css
│ │ ├── jquery.fancybox.css
│ │ ├── shCore.css
│ │ └── main.css
├── app
│ ├── app.component.css
│ ├── article
│ │ ├── article-body
│ │ │ ├── article-body.component.css
│ │ │ ├── article-body.component.html
│ │ │ ├── article-body.component.ts
│ │ │ └── article-body.component.spec.ts
│ │ ├── article-list
│ │ │ ├── article-list.component.css
│ │ │ ├── article-list.component.html
│ │ │ ├── article-list.component.ts
│ │ │ └── article-list.component.spec.ts
│ │ ├── article-header
│ │ │ ├── article-header.component.css
│ │ │ ├── article-header.component.spec.ts
│ │ │ ├── article-header.component.html
│ │ │ └── article-header.component.ts
│ │ ├── data.service.spec.ts
│ │ ├── data.service.ts
│ │ └── article.module.ts
│ ├── footer
│ │ ├── footer.component.css
│ │ ├── footer.component.ts
│ │ ├── footer.component.spec.ts
│ │ └── footer.component.html
│ ├── header
│ │ ├── header.component.css
│ │ ├── header.component.ts
│ │ ├── header.component.spec.ts
│ │ └── header.component.html
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── app.component.spec.ts
│ └── app.component.html
├── favicon.ico
├── styles.css
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── typings.d.ts
├── tsconfig.app.json
├── tsconfig.spec.json
├── main.ts
├── test.ts
├── index.html
├── polyfills.ts
└── api
│ ├── articles.json
│ └── db.json
├── e2e
├── app.po.ts
├── tsconfig.e2e.json
└── app.e2e-spec.ts
├── .editorconfig
├── tsconfig.json
├── .gitignore
├── protractor.conf.js
├── karma.conf.js
├── package.json
├── .angular-cli.json
├── README.md
└── tslint.json
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/article/article-body/article-body.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/article/article-list/article-list.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/article/article-header/article-header.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/footer/footer.component.css:
--------------------------------------------------------------------------------
1 | .credit {
2 | color: yellow !important;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/header/header.component.css:
--------------------------------------------------------------------------------
1 | .highlight {
2 | background-color: yellow;
3 | }
4 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/favicon.ico
--------------------------------------------------------------------------------
/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/logo.png
--------------------------------------------------------------------------------
/src/assets/images/opml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/opml.png
--------------------------------------------------------------------------------
/src/assets/images/rss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/rss.png
--------------------------------------------------------------------------------
/src/assets/images/plurk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/plurk.png
--------------------------------------------------------------------------------
/src/assets/images/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/twitter.png
--------------------------------------------------------------------------------
/src/assets/images/weibo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/weibo.png
--------------------------------------------------------------------------------
/src/assets/images/MCPD_1372.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/MCPD_1372.png
--------------------------------------------------------------------------------
/src/assets/images/MCTS_1370.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/MCTS_1370.png
--------------------------------------------------------------------------------
/src/assets/images/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/facebook.png
--------------------------------------------------------------------------------
/src/assets/images/rssButton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/rssButton.png
--------------------------------------------------------------------------------
/src/assets/images/googleplus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/googleplus.png
--------------------------------------------------------------------------------
/src/typings.d.ts:
--------------------------------------------------------------------------------
1 | /* SystemJS module definition */
2 | declare var module: NodeModule;
3 | interface NodeModule {
4 | id: string;
5 | }
6 |
--------------------------------------------------------------------------------
/src/assets/images/MVP_FullColor_ForBlog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/images/MVP_FullColor_ForBlog.jpg
--------------------------------------------------------------------------------
/src/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/doggy8088/angular-zero/master/src/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/src/app/article/article-body/article-body.component.html:
--------------------------------------------------------------------------------
1 |
{{item|json}}
4 |
--------------------------------------------------------------------------------
/e2e/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "baseUrl": "./",
6 | "module": "es2015",
7 | "types": []
8 | },
9 | "exclude": [
10 | "test.ts",
11 | "**/*.spec.ts"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/src/app/article/article-list/article-list.component.html:
--------------------------------------------------------------------------------
1 | 由於我的 Visual Studio Code 大部分時候都是在命令提示字元下啟動,所以只要用 code .就可以快速啟動 Visual Studio Code 並自動開啟目前所在資料夾。不過不知道從哪個版本開始,我在啟動 Visual Studio Code 之後,卻開始在原本所在的命令提示字元視窗中出現一堆惱人的偵錯訊息,本篇文章試圖解析這個現象,並提出解決辦法。
... 繼續閱讀...
" 11 | }, 12 | { 13 | "id": 2, 14 | "href": "http://blog.miniasp.com/post/2016/03/22/Does-Certification-Exam-Useful.aspx", 15 | "title": "考證照真的沒用嗎?一個從業 20 年的 IT 主管告訴你他怎麼看!", 16 | "date": "2016/03/22 19:28", 17 | "author": "Will 保哥", 18 | "category": "心得分享", 19 | "category-link": "http://blog.miniasp.com/category/%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB.aspx", 20 | "summary": "其實無論在哪個國家都有推行證照制度,且行之有年,台灣當然也不例外,這件事一開始的立意都是好的,就是希望透過一套公平的考試制度,評估一個人的技術能力是否達到一定程度水準,不但能當成一個人的能力指標,也可以讓大家有個明確目標朝專業之路邁進。其他的行業我不清楚,但就我本身熟悉的 IT 產業來說,不知何年何月開始,大家開始對證照制度嗤之以鼻、不屑一顧,甚至覺得是一個人能力的負指標 (也就是能力不好的人才需要靠證照證明自己)。你說這現象是何等的詭異?是什麼樣的天時、地利、人和,可以讓一個原本立意良善的制度,變成人人喊打的落水狗,可能連有張證照都還不敢承認的地步。今天,就來談談我的個人見解。
... 繼續閱讀...
" 21 | }, 22 | { 23 | "id": 3, 24 | "href": "http://blog.miniasp.com/post/2016/03/14/ASPNET-MVC-Developer-Note-Part-28-Understanding-ModelState.aspx", 25 | "title": "ASP.NET MVC 開發心得分享 (28):深入瞭解 ModelState 內部細節", 26 | "date": "2016/03/14 12:14", 27 | "author": "Will 保哥", 28 | "category": "ASP.NET MVC", 29 | "category-link": "http://blog.miniasp.com/category/ASPNET-MVC.aspx", 30 | "summary": "在 ASP.NET MVC 的 模型繫結 (Model Binding) 完成之後,我們可以在 Controller / Action 中取得 ModelState 物件,一般來說我們都會用 ModelState.IsValid 來檢查在「模型繫結」的過程中所做的輸入驗證 (Input Validation) 與 模型驗證 (Model Validation) 是否成功。不過,這個 ModelState物件的用途很廣,裡面存有非常多模型繫結過程的狀態資訊,不但在 Controller 中能用,在 View 裡面也能使用,用的好的話,可以讓你的 Controller 更輕、View 也更乾淨,本篇文章將分享幾個 ModelState 的使用技巧。
... 繼續閱讀...
" 31 | }, 32 | { 33 | "id": 4, 34 | "href": "http://blog.miniasp.com/post/2016/03/06/ASPNET-MVC-5-View-Roslyn-problem-workaround.aspx", 35 | "title": "ASP.NET MVC 5.2.3 的 View 使用 Roslyn (C# 6.0) 編譯時的問題", 36 | "date": "2016/03/06 17:11", 37 | "author": "Will 保哥", 38 | "category": "ASP.NET MVC", 39 | "category-link": "http://blog.miniasp.com/category/ASPNET-MVC.aspx", 40 | "summary": "最近發現目前的 ASP.NET MVC 5 最新版 (v5.2.3) 在搭配 Visual Studio 2015 進行開發時,在 View 頁面中使用 @Html.IdFor() 或 @Html.NameFor()在搭配使用特定 Lambda 語法時會輸出奇怪的字元,由於所有強型別的 HtmlHeper 表單欄位輸出的內部都會用到 IdFor() 與 Namefor() 這兩個 API,所以這個問題將會導致這些表單欄位 HTML 輸出的時候產生錯誤的 id 與 name 屬性,當表單 POST 回 Controller 時將無法正確執行模型繫結 (Model Binding),所以會有接不到資料的情況,本篇文章將詳加說明發生的原因與暫時的解決方案。
... 繼續閱讀...
" 41 | }, 42 | { 43 | "id": 5, 44 | "href": "http://blog.miniasp.com/post/2016/02/19/Useful-tool-PackageManagement-OneGet.aspx", 45 | "title": "介紹好用工具:Win 10 內建的 PackageManagement 套件管理器 (OneGet)", 46 | "date": "2016/02/19 11:55", 47 | "author": "Will 保哥", 48 | "category": "介紹好用工具", 49 | "category-link": "http://blog.miniasp.com/category/%E4%BB%8B%E7%B4%B9%E5%A5%BD%E7%94%A8%E5%B7%A5%E5%85%B7.aspx", 50 | "summary": "OneGet 是微軟新一代 Windows 套件管理器 ( 類似 Ubuntu Linux 底下的 apt-get 工具 ),這名字還蠻漂亮的,不過前陣子卻把名稱改為PackageManagement,但無論如何,我覺得 OneGet 比較好聽,你只要知道這兩個是一樣的東西就好了。 目前這套工具已經內建於 Windows 10 作業系統中,透過 PowerShell 的 Cmdlet 就可以呼叫使用,這個鮮為人知的全新工具試圖解決未來所有軟體安裝的問題,本篇文章將詳細介紹 OneGet 的基本概念與使用方式。
... 繼續閱讀...
" 51 | }, 52 | { 53 | "id": 6, 54 | "href": "http://blog.miniasp.com/post/2016/02/02/JavaScript-novice-advice-and-learning-resources.aspx", 55 | "title": "我要成為前端工程師!給 JavaScript 新手的建議與學習資源整理", 56 | "date": "2016/02/02 17:48", 57 | "author": "Will 保哥", 58 | "category": "前端工程研究", 59 | "category-link": "http://blog.miniasp.com/category/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E7%A0%94%E7%A9%B6.aspx", 60 | "summary": "今年有越來越多企業開始跟我們接洽企業內訓的事,想請我幫他們培訓前端工程師,但你知道一個好的前端工程師絕對不是兩三個月可以養成的,需要多年的努力與磨練才會有點成績。而這幾年可謂前端正夯,有為數不少的人開始大規模的往前端開發移動,而我被問到最多的問題就是「請問 JavaScript 要怎麼學?」或「請問 JavaScript 該怎樣入門?」諸如此類的問題。大家都知道,對於一門程式技術來說,「會寫」與「會教」是兩個截然不同的領域,會寫 JavaScript 的人到處都是,但是會教的人就相對少很多了。我這幾年教授 JavaScript 開發實戰課程已經超過 15 梯次,在將近 500 位學員裡面,我所看到的大部分學員都是對 JavaScript 不勝理解,普遍處於一種一知半解、模糊不清的狀態。另一方面,我在公司內部也帶過不少工程師,總是有人會想學習 JavaScript 但不知道如何入門的情況,這讓我陷入深思,該如何幫助一個人學習 JavaScript 從入門到精通呢?本篇文章將說說我個人的一些想法與建議。
... 繼續閱讀...
" 61 | } 62 | ] 63 | -------------------------------------------------------------------------------- /src/api/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "articles": [ 3 | { 4 | "id": 1, 5 | "href": "http://blog.miniasp.com/post/2016/04/30/Visual-Studio-Code-from-Command-Prompt-notes.aspx", 6 | "title": "從命令提示字元中開啟 Visual Studio Code 如何避免顯示惱人的偵錯訊息", 7 | "date": "2016/04/30 18:05", 8 | "author": "Will 保哥", 9 | "category": "Visual Studio", 10 | "category-link": "http://blog.miniasp.com/category/Visual-Studio.aspx", 11 | "summary": "由於我的 Visual Studio Code 大部分時候都是在命令提示字元下啟動,所以只要用 code .就可以快速啟動 Visual Studio Code 並自動開啟目前所在資料夾。不過不知道從哪個版本開始,我在啟動 Visual Studio Code 之後,卻開始在原本所在的命令提示字元視窗中出現一堆惱人的偵錯訊息,本篇文章試圖解析這個現象,並提出解決辦法。
... 繼續閱讀...
" 12 | }, 13 | { 14 | "id": 2, 15 | "href": "http://blog.miniasp.com/post/2016/03/22/Does-Certification-Exam-Useful.aspx", 16 | "title": "考證照真的沒用嗎?一個從業 20 年的 IT 主管告訴你他怎麼看!", 17 | "date": "2016/03/22 19:28", 18 | "author": "Will 保哥", 19 | "category": "心得分享", 20 | "category-link": "http://blog.miniasp.com/category/%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB.aspx", 21 | "summary": "其實無論在哪個國家都有推行證照制度,且行之有年,台灣當然也不例外,這件事一開始的立意都是好的,就是希望透過一套公平的考試制度,評估一個人的技術能力是否達到一定程度水準,不但能當成一個人的能力指標,也可以讓大家有個明確目標朝專業之路邁進。其他的行業我不清楚,但就我本身熟悉的 IT 產業來說,不知何年何月開始,大家開始對證照制度嗤之以鼻、不屑一顧,甚至覺得是一個人能力的負指標 (也就是能力不好的人才需要靠證照證明自己)。你說這現象是何等的詭異?是什麼樣的天時、地利、人和,可以讓一個原本立意良善的制度,變成人人喊打的落水狗,可能連有張證照都還不敢承認的地步。今天,就來談談我的個人見解。
... 繼續閱讀...
" 22 | }, 23 | { 24 | "id": 3, 25 | "href": "http://blog.miniasp.com/post/2016/03/14/ASPNET-MVC-Developer-Note-Part-28-Understanding-ModelState.aspx", 26 | "title": "ASP.NET MVC 開發心得分享 (28):深入瞭解 ModelState 內部細節", 27 | "date": "2016/03/14 12:14", 28 | "author": "Will 保哥", 29 | "category": "ASP.NET MVC", 30 | "category-link": "http://blog.miniasp.com/category/ASPNET-MVC.aspx", 31 | "summary": "在 ASP.NET MVC 的 模型繫結 (Model Binding) 完成之後,我們可以在 Controller / Action 中取得 ModelState 物件,一般來說我們都會用 ModelState.IsValid 來檢查在「模型繫結」的過程中所做的輸入驗證 (Input Validation) 與 模型驗證 (Model Validation) 是否成功。不過,這個 ModelState物件的用途很廣,裡面存有非常多模型繫結過程的狀態資訊,不但在 Controller 中能用,在 View 裡面也能使用,用的好的話,可以讓你的 Controller 更輕、View 也更乾淨,本篇文章將分享幾個 ModelState 的使用技巧。
... 繼續閱讀...
" 32 | }, 33 | { 34 | "id": 4, 35 | "href": "http://blog.miniasp.com/post/2016/03/06/ASPNET-MVC-5-View-Roslyn-problem-workaround.aspx", 36 | "title": "ASP.NET MVC 5.2.3 的 View 使用 Roslyn (C# 6.0) 編譯時的問題", 37 | "date": "2016/03/06 17:11", 38 | "author": "Will 保哥", 39 | "category": "ASP.NET MVC", 40 | "category-link": "http://blog.miniasp.com/category/ASPNET-MVC.aspx", 41 | "summary": "最近發現目前的 ASP.NET MVC 5 最新版 (v5.2.3) 在搭配 Visual Studio 2015 進行開發時,在 View 頁面中使用 @Html.IdFor() 或 @Html.NameFor()在搭配使用特定 Lambda 語法時會輸出奇怪的字元,由於所有強型別的 HtmlHeper 表單欄位輸出的內部都會用到 IdFor() 與 Namefor() 這兩個 API,所以這個問題將會導致這些表單欄位 HTML 輸出的時候產生錯誤的 id 與 name 屬性,當表單 POST 回 Controller 時將無法正確執行模型繫結 (Model Binding),所以會有接不到資料的情況,本篇文章將詳加說明發生的原因與暫時的解決方案。
... 繼續閱讀...
" 42 | }, 43 | { 44 | "id": 5, 45 | "href": "http://blog.miniasp.com/post/2016/02/19/Useful-tool-PackageManagement-OneGet.aspx", 46 | "title": "介紹好用工具:Win 10 內建的 PackageManagement 套件管理器 (OneGet)", 47 | "date": "2016/02/19 11:55", 48 | "author": "Will 保哥", 49 | "category": "介紹好用工具", 50 | "category-link": "http://blog.miniasp.com/category/%E4%BB%8B%E7%B4%B9%E5%A5%BD%E7%94%A8%E5%B7%A5%E5%85%B7.aspx", 51 | "summary": "OneGet 是微軟新一代 Windows 套件管理器 ( 類似 Ubuntu Linux 底下的 apt-get 工具 ),這名字還蠻漂亮的,不過前陣子卻把名稱改為PackageManagement,但無論如何,我覺得 OneGet 比較好聽,你只要知道這兩個是一樣的東西就好了。 目前這套工具已經內建於 Windows 10 作業系統中,透過 PowerShell 的 Cmdlet 就可以呼叫使用,這個鮮為人知的全新工具試圖解決未來所有軟體安裝的問題,本篇文章將詳細介紹 OneGet 的基本概念與使用方式。
... 繼續閱讀...
" 52 | }, 53 | { 54 | "id": 6, 55 | "href": "http://blog.miniasp.com/post/2016/02/02/JavaScript-novice-advice-and-learning-resources.aspx", 56 | "title": "我要成為前端工程師!給 JavaScript 新手的建議與學習資源整理", 57 | "date": "2016/02/02 17:48", 58 | "author": "Will 保哥", 59 | "category": "前端工程研究", 60 | "category-link": "http://blog.miniasp.com/category/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E7%A0%94%E7%A9%B6.aspx", 61 | "summary": "今年有越來越多企業開始跟我們接洽企業內訓的事,想請我幫他們培訓前端工程師,但你知道一個好的前端工程師絕對不是兩三個月可以養成的,需要多年的努力與磨練才會有點成績。而這幾年可謂前端正夯,有為數不少的人開始大規模的往前端開發移動,而我被問到最多的問題就是「請問 JavaScript 要怎麼學?」或「請問 JavaScript 該怎樣入門?」諸如此類的問題。大家都知道,對於一門程式技術來說,「會寫」與「會教」是兩個截然不同的領域,會寫 JavaScript 的人到處都是,但是會教的人就相對少很多了。我這幾年教授 JavaScript 開發實戰課程已經超過 15 梯次,在將近 500 位學員裡面,我所看到的大部分學員都是對 JavaScript 不勝理解,普遍處於一種一知半解、模糊不清的狀態。另一方面,我在公司內部也帶過不少工程師,總是有人會想學習 JavaScript 但不知道如何入門的情況,這讓我陷入深思,該如何幫助一個人學習 JavaScript 從入門到精通呢?本篇文章將說說我個人的一些想法與建議。
... 繼續閱讀...
" 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /src/assets/styles/jquery.fancybox.css: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | .fancybox-wrap, 3 | .fancybox-skin, 4 | .fancybox-outer, 5 | .fancybox-inner, 6 | .fancybox-image, 7 | .fancybox-wrap iframe, 8 | .fancybox-wrap object, 9 | .fancybox-nav, 10 | .fancybox-nav span, 11 | .fancybox-tmp 12 | { 13 | padding: 0; 14 | margin: 0; 15 | border: 0; 16 | outline: none; 17 | vertical-align: top; 18 | } 19 | 20 | .fancybox-wrap { 21 | position: absolute; 22 | top: 0; 23 | left: 0; 24 | z-index: 8020; 25 | } 26 | 27 | .fancybox-skin { 28 | position: relative; 29 | background: #f9f9f9; 30 | color: #444; 31 | text-shadow: none; 32 | -webkit-border-radius: 4px; 33 | -moz-border-radius: 4px; 34 | border-radius: 4px; 35 | } 36 | 37 | .fancybox-opened { 38 | z-index: 8030; 39 | } 40 | 41 | .fancybox-opened .fancybox-skin { 42 | -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 43 | -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 44 | box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 45 | } 46 | 47 | .fancybox-outer, .fancybox-inner { 48 | position: relative; 49 | } 50 | 51 | .fancybox-inner { 52 | overflow: hidden; 53 | } 54 | 55 | .fancybox-type-iframe .fancybox-inner { 56 | -webkit-overflow-scrolling: touch; 57 | } 58 | 59 | .fancybox-error { 60 | color: #444; 61 | font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 62 | margin: 0; 63 | padding: 15px; 64 | white-space: nowrap; 65 | } 66 | 67 | .fancybox-image, .fancybox-iframe { 68 | display: block; 69 | width: 100%; 70 | height: 100%; 71 | } 72 | 73 | .fancybox-image { 74 | max-width: 100%; 75 | max-height: 100%; 76 | } 77 | 78 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 79 | background-image: url('fancybox_sprite.png'); 80 | } 81 | 82 | #fancybox-loading { 83 | position: fixed; 84 | top: 50%; 85 | left: 50%; 86 | margin-top: -22px; 87 | margin-left: -22px; 88 | background-position: 0 -108px; 89 | opacity: 0.8; 90 | cursor: pointer; 91 | z-index: 8060; 92 | } 93 | 94 | #fancybox-loading div { 95 | width: 44px; 96 | height: 44px; 97 | background: url('fancybox_loading.gif') center center no-repeat; 98 | } 99 | 100 | .fancybox-close { 101 | position: absolute; 102 | top: -18px; 103 | right: -18px; 104 | width: 36px; 105 | height: 36px; 106 | cursor: pointer; 107 | z-index: 8040; 108 | } 109 | 110 | .fancybox-nav { 111 | position: absolute; 112 | top: 0; 113 | width: 40%; 114 | height: 100%; 115 | cursor: pointer; 116 | text-decoration: none; 117 | background: transparent url('blank.gif'); /* helps IE */ 118 | -webkit-tap-highlight-color: rgba(0,0,0,0); 119 | z-index: 8040; 120 | } 121 | 122 | .fancybox-prev { 123 | left: 0; 124 | } 125 | 126 | .fancybox-next { 127 | right: 0; 128 | } 129 | 130 | .fancybox-nav span { 131 | position: absolute; 132 | top: 50%; 133 | width: 36px; 134 | height: 34px; 135 | margin-top: -18px; 136 | cursor: pointer; 137 | z-index: 8040; 138 | visibility: hidden; 139 | } 140 | 141 | .fancybox-prev span { 142 | left: 10px; 143 | background-position: 0 -36px; 144 | } 145 | 146 | .fancybox-next span { 147 | right: 10px; 148 | background-position: 0 -72px; 149 | } 150 | 151 | .fancybox-nav:hover span { 152 | visibility: visible; 153 | } 154 | 155 | .fancybox-tmp { 156 | position: absolute; 157 | top: -99999px; 158 | left: -99999px; 159 | visibility: hidden; 160 | max-width: 99999px; 161 | max-height: 99999px; 162 | overflow: visible !important; 163 | } 164 | 165 | /* Overlay helper */ 166 | 167 | .fancybox-lock { 168 | overflow: hidden !important; 169 | width: auto; 170 | } 171 | 172 | .fancybox-lock body { 173 | overflow: hidden !important; 174 | } 175 | 176 | .fancybox-lock-test { 177 | overflow-y: hidden !important; 178 | } 179 | 180 | .fancybox-overlay { 181 | position: absolute; 182 | top: 0; 183 | left: 0; 184 | overflow: hidden; 185 | display: none; 186 | z-index: 8010; 187 | background: url('fancybox_overlay.png'); 188 | } 189 | 190 | .fancybox-overlay-fixed { 191 | position: fixed; 192 | bottom: 0; 193 | right: 0; 194 | } 195 | 196 | .fancybox-lock .fancybox-overlay { 197 | overflow: auto; 198 | overflow-y: scroll; 199 | } 200 | 201 | /* Title helper */ 202 | 203 | .fancybox-title { 204 | visibility: hidden; 205 | font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 206 | position: relative; 207 | text-shadow: none; 208 | z-index: 8050; 209 | } 210 | 211 | .fancybox-opened .fancybox-title { 212 | visibility: visible; 213 | } 214 | 215 | .fancybox-title-float-wrap { 216 | position: absolute; 217 | bottom: 0; 218 | right: 50%; 219 | margin-bottom: -35px; 220 | z-index: 8050; 221 | text-align: center; 222 | } 223 | 224 | .fancybox-title-float-wrap .child { 225 | display: inline-block; 226 | margin-right: -100%; 227 | padding: 2px 20px; 228 | background: transparent; /* Fallback for web browsers that doesn't support RGBa */ 229 | background: rgba(0, 0, 0, 0.8); 230 | -webkit-border-radius: 15px; 231 | -moz-border-radius: 15px; 232 | border-radius: 15px; 233 | text-shadow: 0 1px 2px #222; 234 | color: #FFF; 235 | font-weight: bold; 236 | line-height: 24px; 237 | white-space: nowrap; 238 | } 239 | 240 | .fancybox-title-outside-wrap { 241 | position: relative; 242 | margin-top: 10px; 243 | color: #fff; 244 | } 245 | 246 | .fancybox-title-inside-wrap { 247 | padding-top: 10px; 248 | } 249 | 250 | .fancybox-title-over-wrap { 251 | position: absolute; 252 | bottom: 0; 253 | left: 0; 254 | color: #fff; 255 | padding: 10px; 256 | background: #000; 257 | background: rgba(0, 0, 0, .8); 258 | } 259 | 260 | /*Retina graphics!*/ 261 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 262 | only screen and (min--moz-device-pixel-ratio: 1.5), 263 | only screen and (min-device-pixel-ratio: 1.5){ 264 | 265 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 266 | background-image: url('fancybox_sprite@2x.png'); 267 | background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ 268 | } 269 | 270 | #fancybox-loading div { 271 | background-image: url('fancybox_loading@2x.gif'); 272 | background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ 273 | } 274 | } -------------------------------------------------------------------------------- /src/assets/styles/shCore.css: -------------------------------------------------------------------------------- 1 | .syntaxhighlighter a, 2 | .syntaxhighlighter div, 3 | .syntaxhighlighter code, 4 | .syntaxhighlighter table, 5 | .syntaxhighlighter table td, 6 | .syntaxhighlighter table tr, 7 | .syntaxhighlighter table tbody, 8 | .syntaxhighlighter table thead, 9 | .syntaxhighlighter table caption, 10 | .syntaxhighlighter textarea { 11 | -moz-border-radius: 0 0 0 0 !important; 12 | -webkit-border-radius: 0 0 0 0 !important; 13 | background: none !important; 14 | border: 0 !important; 15 | bottom: auto !important; 16 | float: none !important; 17 | height: auto !important; 18 | left: auto !important; 19 | line-height: 1.1em !important; 20 | margin: 0 !important; 21 | outline: 0 !important; 22 | overflow: visible !important; 23 | padding: 0 !important; 24 | position: static !important; 25 | right: auto !important; 26 | text-align: left !important; 27 | top: auto !important; 28 | vertical-align: baseline !important; 29 | width: auto !important; 30 | box-sizing: content-box !important; 31 | font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; 32 | font-weight: normal !important; 33 | font-style: normal !important; 34 | font-size: 1em !important; 35 | min-height: inherit !important; 36 | min-height: auto !important; 37 | } 38 | 39 | .syntaxhighlighter { 40 | width: 100% !important; 41 | margin: 1em 0 1em 0 !important; 42 | position: relative !important; 43 | overflow: auto !important; 44 | font-size: 1em !important; 45 | } 46 | .syntaxhighlighter.source { 47 | overflow: hidden !important; 48 | } 49 | .syntaxhighlighter .bold { 50 | font-weight: bold !important; 51 | } 52 | .syntaxhighlighter .italic { 53 | font-style: italic !important; 54 | } 55 | .syntaxhighlighter .line { 56 | white-space: pre !important; 57 | } 58 | .syntaxhighlighter table { 59 | width: 100% !important; 60 | } 61 | .syntaxhighlighter table caption { 62 | text-align: left !important; 63 | padding: .5em 0 0.5em 1em !important; 64 | } 65 | .syntaxhighlighter table td.code { 66 | width: 100% !important; 67 | } 68 | .syntaxhighlighter table td.code .container { 69 | position: relative !important; 70 | } 71 | .syntaxhighlighter table td.code .container textarea { 72 | box-sizing: border-box !important; 73 | position: absolute !important; 74 | left: 0 !important; 75 | top: 0 !important; 76 | width: 100% !important; 77 | height: 100% !important; 78 | border: none !important; 79 | background: white !important; 80 | padding-left: 1em !important; 81 | overflow: hidden !important; 82 | white-space: pre !important; 83 | } 84 | .syntaxhighlighter table td.gutter .line { 85 | text-align: right !important; 86 | padding: 0 0.5em 0 1em !important; 87 | } 88 | .syntaxhighlighter table td.code .line { 89 | padding: 0 1em !important; 90 | } 91 | .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { 92 | padding-left: 0em !important; 93 | } 94 | .syntaxhighlighter.show { 95 | display: block !important; 96 | } 97 | .syntaxhighlighter.collapsed table { 98 | display: none !important; 99 | } 100 | .syntaxhighlighter.collapsed .toolbar { 101 | padding: 0.1em 0.8em 0em 0.8em !important; 102 | font-size: 1em !important; 103 | position: static !important; 104 | width: auto !important; 105 | height: auto !important; 106 | } 107 | .syntaxhighlighter.collapsed .toolbar span { 108 | display: inline !important; 109 | margin-right: 1em !important; 110 | } 111 | .syntaxhighlighter.collapsed .toolbar span a { 112 | padding: 0 !important; 113 | display: none !important; 114 | } 115 | .syntaxhighlighter.collapsed .toolbar span a.expandSource { 116 | display: inline !important; 117 | } 118 | .syntaxhighlighter .toolbar { 119 | position: absolute !important; 120 | right: 1px !important; 121 | top: 1px !important; 122 | width: 11px !important; 123 | height: 11px !important; 124 | font-size: 10px !important; 125 | z-index: 10 !important; 126 | } 127 | .syntaxhighlighter .toolbar span.title { 128 | display: inline !important; 129 | } 130 | .syntaxhighlighter .toolbar a { 131 | display: block !important; 132 | text-align: center !important; 133 | text-decoration: none !important; 134 | padding-top: 1px !important; 135 | } 136 | .syntaxhighlighter .toolbar a.expandSource { 137 | display: none !important; 138 | } 139 | .syntaxhighlighter.ie { 140 | font-size: .9em !important; 141 | padding: 1px 0 1px 0 !important; 142 | } 143 | .syntaxhighlighter.ie .toolbar { 144 | line-height: 8px !important; 145 | } 146 | .syntaxhighlighter.ie .toolbar a { 147 | padding-top: 0px !important; 148 | } 149 | .syntaxhighlighter.printing .line.alt1 .content, 150 | .syntaxhighlighter.printing .line.alt2 .content, 151 | .syntaxhighlighter.printing .line.highlighted .number, 152 | .syntaxhighlighter.printing .line.highlighted.alt1 .content, 153 | .syntaxhighlighter.printing .line.highlighted.alt2 .content { 154 | background: none !important; 155 | } 156 | .syntaxhighlighter.printing .line .number { 157 | color: #bbbbbb !important; 158 | } 159 | .syntaxhighlighter.printing .line .content { 160 | color: black !important; 161 | } 162 | .syntaxhighlighter.printing .toolbar { 163 | display: none !important; 164 | } 165 | .syntaxhighlighter.printing a { 166 | text-decoration: none !important; 167 | } 168 | .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { 169 | color: black !important; 170 | } 171 | .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { 172 | color: #008200 !important; 173 | } 174 | .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { 175 | color: blue !important; 176 | } 177 | .syntaxhighlighter.printing .keyword { 178 | color: #006699 !important; 179 | font-weight: bold !important; 180 | } 181 | .syntaxhighlighter.printing .preprocessor { 182 | color: gray !important; 183 | } 184 | .syntaxhighlighter.printing .variable { 185 | color: #aa7700 !important; 186 | } 187 | .syntaxhighlighter.printing .value { 188 | color: #009900 !important; 189 | } 190 | .syntaxhighlighter.printing .functions { 191 | color: #ff1493 !important; 192 | } 193 | .syntaxhighlighter.printing .constants { 194 | color: #0066cc !important; 195 | } 196 | .syntaxhighlighter.printing .script { 197 | font-weight: bold !important; 198 | } 199 | .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { 200 | color: gray !important; 201 | } 202 | .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { 203 | color: #ff1493 !important; 204 | } 205 | .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { 206 | color: red !important; 207 | } 208 | .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { 209 | color: black !important; 210 | } 211 | -------------------------------------------------------------------------------- /src/assets/scripts/04-jquery-jtemplates.js: -------------------------------------------------------------------------------- 1 | /* jTemplates 0.7.8 (http://jtemplates.tpython.com) Copyright (c) 2009 Tomasz Gloc */ 2 | eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('a(37.b&&!37.b.38){(9(b){6 m=9(s,A,f){5.1M=[];5.1u={};5.2p=E;5.1N={};5.1c={};5.f=b.1m({1Z:1f,3a:1O,2q:1f,2r:1f,3b:1O,3c:1O},f);5.1v=(5.f.1v!==F)?(5.f.1v):(13.20);5.Y=(5.f.Y!==F)?(5.f.Y):(13.3d);5.3e(s,A);a(s){5.1w(5.1c[\'21\'],A,5.f)}5.1c=E};m.y.2s=\'0.7.8\';m.R=1O;m.y.3e=9(s,A){6 2t=/\\{#14 *(\\w*?)( .*)*\\}/g;6 22,1x,M;6 1y=E;6 2u=[];2v((22=2t.3N(s))!=E){1y=2t.1y;1x=22[1];M=s.2w(\'{#/14 \'+1x+\'}\',1y);a(M==-1){C j Z(\'15: m "\'+1x+\'" 2x 23 3O.\');}5.1c[1x]=s.2y(1y,M);2u[1x]=13.2z(22[2])}a(1y===E){5.1c[\'21\']=s;c}N(6 i 24 5.1c){a(i!=\'21\'){5.1N[i]=j m()}}N(6 i 24 5.1c){a(i!=\'21\'){5.1N[i].1w(5.1c[i],b.1m({},A||{},5.1N||{}),b.1m({},5.f,2u[i]));5.1c[i]=E}}};m.y.1w=9(s,A,f){a(s==F){5.1M.B(j 1g(\'\',1,5));c}s=s.U(/[\\n\\r]/g,\'\');s=s.U(/\\{\\*.*?\\*\\}/g,\'\');5.2p=b.1m({},5.1N||{},A||{});5.f=j 2A(f);6 p=5.1M;6 1P=s.1h(/\\{#.*?\\}/g);6 16=0,M=0;6 e;6 1i=0;6 25=0;N(6 i=0,l=(1P)?(1P.V):(0);iThe requested content cannot be loaded.
Please try again later.