VPN
4 |不再提供免费 VPN 服务
可以提供 5元/月 的付费服务
有意者请联系我的 QQ 413298956
├── static
├── css
│ ├── common.css
│ ├── video.css
│ ├── vpn.css
│ ├── wallpaper.css
│ ├── home.css
│ ├── admin
│ │ └── login.css
│ └── news.css
├── bower_components
│ ├── jquery
│ │ ├── src
│ │ │ ├── outro.js
│ │ │ ├── selector.js
│ │ │ ├── var
│ │ │ │ ├── arr.js
│ │ │ │ ├── rnotwhite.js
│ │ │ │ ├── strundefined.js
│ │ │ │ ├── push.js
│ │ │ │ ├── class2type.js
│ │ │ │ ├── concat.js
│ │ │ │ ├── indexOf.js
│ │ │ │ ├── slice.js
│ │ │ │ ├── pnum.js
│ │ │ │ ├── toString.js
│ │ │ │ ├── hasOwn.js
│ │ │ │ └── support.js
│ │ │ ├── ajax
│ │ │ │ ├── var
│ │ │ │ │ ├── rquery.js
│ │ │ │ │ └── nonce.js
│ │ │ │ ├── parseJSON.js
│ │ │ │ ├── parseXML.js
│ │ │ │ ├── script.js
│ │ │ │ ├── load.js
│ │ │ │ └── jsonp.js
│ │ │ ├── css
│ │ │ │ ├── var
│ │ │ │ │ ├── rmargin.js
│ │ │ │ │ ├── cssExpand.js
│ │ │ │ │ ├── rnumnonpx.js
│ │ │ │ │ ├── isHidden.js
│ │ │ │ │ └── getStyles.js
│ │ │ │ ├── hiddenVisibleSelectors.js
│ │ │ │ ├── addGetHookIf.js
│ │ │ │ ├── swap.js
│ │ │ │ ├── curCSS.js
│ │ │ │ └── defaultDisplay.js
│ │ │ ├── data
│ │ │ │ ├── var
│ │ │ │ │ ├── data_priv.js
│ │ │ │ │ └── data_user.js
│ │ │ │ └── accepts.js
│ │ │ ├── manipulation
│ │ │ │ ├── var
│ │ │ │ │ └── rcheckableType.js
│ │ │ │ ├── _evalUrl.js
│ │ │ │ └── support.js
│ │ │ ├── core
│ │ │ │ ├── var
│ │ │ │ │ └── rsingleTag.js
│ │ │ │ ├── parseHTML.js
│ │ │ │ ├── access.js
│ │ │ │ └── ready.js
│ │ │ ├── traversing
│ │ │ │ ├── var
│ │ │ │ │ └── rneedsContext.js
│ │ │ │ └── findFilter.js
│ │ │ ├── event
│ │ │ │ ├── support.js
│ │ │ │ ├── ajax.js
│ │ │ │ └── alias.js
│ │ │ ├── attributes.js
│ │ │ ├── deprecated.js
│ │ │ ├── effects
│ │ │ │ └── animatedSelector.js
│ │ │ ├── selector-sizzle.js
│ │ │ ├── queue
│ │ │ │ └── delay.js
│ │ │ ├── jquery.js
│ │ │ ├── exports
│ │ │ │ ├── global.js
│ │ │ │ └── amd.js
│ │ │ ├── attributes
│ │ │ │ ├── support.js
│ │ │ │ └── prop.js
│ │ │ ├── intro.js
│ │ │ ├── wrap.js
│ │ │ └── dimensions.js
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ └── MIT-LICENSE.txt
│ ├── angular-once
│ │ ├── .gitignore
│ │ ├── package.json
│ │ ├── LICENSE.txt
│ │ ├── Gruntfile.js
│ │ ├── bower.json
│ │ └── .bower.json
│ ├── cryptojslib
│ │ ├── status.bat
│ │ ├── push.bat
│ │ ├── components
│ │ │ ├── pad-nopadding-min.js
│ │ │ ├── pad-nopadding.js
│ │ │ ├── format-hex-min.js
│ │ │ ├── pad-ansix923-min.js
│ │ │ ├── pad-iso97971-min.js
│ │ │ ├── pad-zeropadding-min.js
│ │ │ ├── pad-iso10126-min.js
│ │ │ ├── mode-ecb-min.js
│ │ │ ├── mode-ofb-min.js
│ │ │ ├── mode-ctr-min.js
│ │ │ ├── sha224-min.js
│ │ │ ├── mode-cfb-min.js
│ │ │ ├── x64-core-min.js
│ │ │ ├── evpkdf-min.js
│ │ │ ├── mode-ecb.js
│ │ │ ├── sha384-min.js
│ │ │ ├── pad-iso97971.js
│ │ │ ├── lib-typedarrays-min.js
│ │ │ ├── pbkdf2-min.js
│ │ │ ├── hmac-min.js
│ │ │ ├── pad-zeropadding.js
│ │ │ ├── mode-ctr-gladman-min.js
│ │ │ ├── enc-base64-min.js
│ │ │ ├── enc-utf16-min.js
│ │ │ ├── rc4-min.js
│ │ │ ├── pad-iso10126.js
│ │ │ ├── pad-ansix923.js
│ │ │ ├── sha1-min.js
│ │ │ ├── mode-ofb.js
│ │ │ ├── mode-ctr.js
│ │ │ ├── sha256-min.js
│ │ │ ├── format-hex.js
│ │ │ ├── sha224.js
│ │ │ ├── mode-cfb.js
│ │ │ ├── aes-min.js
│ │ │ ├── lib-typedarrays.js
│ │ │ ├── sha384.js
│ │ │ ├── rabbit-legacy-min.js
│ │ │ ├── sha3-min.js
│ │ │ ├── rabbit-min.js
│ │ │ ├── mode-ctr-gladman.js
│ │ │ ├── md5-min.js
│ │ │ └── core-min.js
│ │ ├── bower.json
│ │ ├── .gitattributes
│ │ ├── .bower.json
│ │ └── copyright.txt
│ ├── angular
│ │ ├── angular.min.js.gzip
│ │ ├── bower.json
│ │ ├── angular-csp.css
│ │ ├── .bower.json
│ │ ├── package.json
│ │ └── README.md
│ ├── angular-animate
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── package.json
│ │ └── README.md
│ ├── angular-resource
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── package.json
│ │ └── README.md
│ ├── angular-sanitize
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── package.json
│ │ └── README.md
│ ├── angular-ui-router
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── LICENSE
│ │ └── src
│ │ │ ├── stateFilters.js
│ │ │ ├── viewScroll.js
│ │ │ └── view.js
│ ├── angular-loading-bar
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── LICENSE
│ │ ├── package.json
│ │ ├── build
│ │ │ ├── loading-bar.min.css
│ │ │ └── loading-bar.min.js
│ │ ├── Gruntfile.js
│ │ └── CHANGELOG.md
│ └── velocity
│ │ ├── bower.json
│ │ └── .bower.json
├── favicon.ico
├── images
│ ├── wallpaper.jpg
│ ├── fonts
│ │ ├── Italiana.ttf
│ │ └── Italiana.woff2
│ ├── iconfont
│ │ ├── iconfont.eot
│ │ ├── iconfont.ttf
│ │ └── iconfont.woff
│ └── loading-spin.svg
├── templates
│ ├── video.html
│ ├── news
│ │ ├── index.html
│ │ ├── detail.html
│ │ └── list.html
│ ├── vpn.html
│ ├── wallpaper
│ │ └── index.html
│ ├── music
│ │ ├── index.html
│ │ └── play.html
│ └── home.html
├── scss
│ ├── video.scss
│ ├── main.scss
│ ├── common.scss
│ ├── vpn.scss
│ ├── wallpaper.scss
│ └── home.scss
├── components
│ ├── k-player
│ │ ├── images
│ │ │ └── iconfonts
│ │ │ │ ├── iconfont.eot
│ │ │ │ ├── iconfont.ttf
│ │ │ │ ├── iconfont.woff
│ │ │ │ └── iconfont.svg
│ │ ├── config.rb
│ │ └── k-player.html
│ ├── k-slider
│ │ └── k-slider.css
│ ├── extended
│ │ └── extended.js
│ └── k-scroll
│ │ └── k-scroll.css
├── js
│ ├── services
│ │ ├── music.js
│ │ ├── wallpaper.js
│ │ ├── navbar.js
│ │ ├── news.js
│ │ └── memory.js
│ ├── video.js
│ ├── wallpaper.js
│ └── home.js
├── config.rb
└── index.html
├── README.md
├── services
├── music.js
├── wallpaper.js
├── video.js
└── news.js
├── middlewares
├── errorhandler.js
└── view.js
├── db
├── wallpaper.js
├── music.js
├── news.js
└── video.js
├── config.default.js
├── web_router.js
├── controllers
├── news.js
├── wallpaper.js
└── music.js
├── .gitignore
├── package.json
├── setupsocket.js
├── app.js
└── Gruntfile.js
/static/css/common.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | iro-x
2 | =======
3 | next generation web
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/outro.js:
--------------------------------------------------------------------------------
1 | }));
2 |
--------------------------------------------------------------------------------
/static/bower_components/angular-once/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .idea/
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/selector.js:
--------------------------------------------------------------------------------
1 | define([ "./selector-sizzle" ]);
2 |
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KuroGuo/iro-x/HEAD/static/favicon.ico
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/var/arr.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return [];
3 | });
4 |
--------------------------------------------------------------------------------
/static/css/video.css:
--------------------------------------------------------------------------------
1 | #video,#video k-player{position:absolute;width:100%;height:100%}
2 |
--------------------------------------------------------------------------------
/static/bower_components/cryptojslib/status.bat:
--------------------------------------------------------------------------------
1 | git status
2 | git log --branches --not --remotes
--------------------------------------------------------------------------------
/static/images/wallpaper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KuroGuo/iro-x/HEAD/static/images/wallpaper.jpg
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/ajax/var/rquery.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/\?/);
3 | });
4 |
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/var/rnotwhite.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/\S+/g);
3 | });
4 |
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/css/var/rmargin.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/^margin/);
3 | });
4 |
--------------------------------------------------------------------------------
/static/images/fonts/Italiana.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KuroGuo/iro-x/HEAD/static/images/fonts/Italiana.ttf
--------------------------------------------------------------------------------
/static/templates/video.html:
--------------------------------------------------------------------------------
1 |
不再提供免费 VPN 服务
可以提供 5元/月 的付费服务
有意者请联系我的 QQ 413298956
55 | * $scope.$on('$viewContentLoading',
56 | * function(event, viewConfig){
57 | * // Access to all the view config properties.
58 | * // and one special property 'targetView'
59 | * // viewConfig.targetView
60 | * });
61 | *
62 | */
63 | $rootScope.$broadcast('$viewContentLoading', options);
64 | }
65 | return result;
66 | }
67 | };
68 | }
69 | }
70 |
71 | angular.module('ui.router.state').provider('$view', $ViewProvider);
72 |
--------------------------------------------------------------------------------
/static/bower_components/angular-loading-bar/build/loading-bar.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-loading-bar v0.6.0
3 | * https://chieffancypants.github.io/angular-loading-bar
4 | * Copyright (c) 2014 Wes Cruver
5 | * License: MIT
6 | */
7 |
8 | #loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}}
--------------------------------------------------------------------------------
/static/scss/home.scss:
--------------------------------------------------------------------------------
1 | @import "compass/css3";
2 |
3 | #home {
4 | position: absolute;
5 | width: 100%;
6 | height: 100%;
7 |
8 | $padding: 2%;
9 | $menu-list-inner-width: 26rem;
10 | $menu-list-inner-height: 7rem;
11 |
12 |
13 | .menu-list {
14 | background-color: rgba(0, 0, 0, 0.2);
15 | overflow: hidden;
16 | position: absolute;
17 | bottom: $padding;
18 | left: $padding;
19 | right: $padding;
20 | margin: auto;
21 | width: $menu-list-inner-width;
22 |
23 | .k-slider-wrapper {
24 | height: $menu-list-inner-height;
25 |
26 | a {
27 | display: inline-block;
28 | width: $menu-list-inner-width / 4;
29 | height: $menu-list-inner-height;
30 | color: white;
31 | text-align: center;
32 | position: relative;
33 | cursor: pointer;
34 | // @include transition(all .2s);
35 | // @include transform(translateZ(0)scale(1));
36 |
37 | &.active {
38 | // @include transform(translateZ(0)scale(.95));
39 | color: #999;
40 | }
41 |
42 | .icon,
43 | .text {
44 | position: absolute;
45 | left: 0;
46 | right: 0;
47 | }
48 |
49 | .icon {
50 | top: 15%;
51 | font-size: 3.5rem;
52 | }
53 |
54 | .text {
55 | bottom: 15%;
56 | font-size: 1rem;
57 | }
58 | }
59 | }
60 |
61 | .slider-nav {
62 | height: 16px;
63 | text-align: center;
64 |
65 | .circle {
66 | display: inline-block;
67 | width: 6px;
68 | height: 6px;
69 | border-radius: 100%;
70 | background-color: rgba(255,255,255,.5);
71 | margin: 0 3px;
72 | @include transform(translateZ(0));
73 |
74 | &.active {
75 | background-color: white;
76 | }
77 | }
78 | }
79 | }
80 |
81 | .datetime-box {
82 | display: block;
83 | cursor: default;
84 | position: absolute;
85 | background-color: rgba(0, 0, 0, .2);
86 | right: $padding;
87 | top: $padding;
88 | text-align: right;
89 | padding: 1rem;
90 |
91 | .date,
92 | .time,
93 | .day {
94 | color: white;
95 | }
96 |
97 | .time {
98 | font-size: 5rem;
99 | line-height: 0.9em;
100 | }
101 |
102 | .date,
103 | .day {
104 | font-size: 1.2rem;
105 | line-height: 1.2em;
106 | }
107 | }
108 | }
--------------------------------------------------------------------------------
/static/bower_components/cryptojslib/components/mode-ctr-gladman.js:
--------------------------------------------------------------------------------
1 | /*
2 | CryptoJS v3.1.2
3 | code.google.com/p/crypto-js
4 | (c) 2009-2013 by Jeff Mott. All rights reserved.
5 | code.google.com/p/crypto-js/wiki/License
6 | */
7 | /** @preserve
8 | * Counter block mode compatible with Dr Brian Gladman fileenc.c
9 | * derived from CryptoJS.mode.CTR
10 | * Jan Hruby jhruby.web@gmail.com
11 | */
12 | CryptoJS.mode.CTRGladman = (function () {
13 | var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
14 |
15 | function incWord(word)
16 | {
17 | if (((word >> 24) & 0xff) === 0xff) { //overflow
18 | var b1 = (word >> 16)&0xff;
19 | var b2 = (word >> 8)&0xff;
20 | var b3 = word & 0xff;
21 |
22 | if (b1 === 0xff) // overflow b1
23 | {
24 | b1 = 0;
25 | if (b2 === 0xff)
26 | {
27 | b2 = 0;
28 | if (b3 === 0xff)
29 | {
30 | b3 = 0;
31 | }
32 | else
33 | {
34 | ++b3;
35 | }
36 | }
37 | else
38 | {
39 | ++b2;
40 | }
41 | }
42 | else
43 | {
44 | ++b1;
45 | }
46 |
47 | word = 0;
48 | word += (b1 << 16);
49 | word += (b2 << 8);
50 | word += b3;
51 | }
52 | else
53 | {
54 | word += (0x01 << 24);
55 | }
56 | return word;
57 | }
58 |
59 | function incCounter(counter)
60 | {
61 | if ((counter[0] = incWord(counter[0])) === 0)
62 | {
63 | // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
64 | counter[1] = incWord(counter[1]);
65 | }
66 | return counter;
67 | }
68 |
69 | var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
70 | processBlock: function (words, offset) {
71 | // Shortcuts
72 | var cipher = this._cipher
73 | var blockSize = cipher.blockSize;
74 | var iv = this._iv;
75 | var counter = this._counter;
76 |
77 | // Generate keystream
78 | if (iv) {
79 | counter = this._counter = iv.slice(0);
80 |
81 | // Remove IV for subsequent blocks
82 | this._iv = undefined;
83 | }
84 |
85 | incCounter(counter);
86 |
87 | var keystream = counter.slice(0);
88 | cipher.encryptBlock(keystream, 0);
89 |
90 | // Encrypt
91 | for (var i = 0; i < blockSize; i++) {
92 | words[offset + i] ^= keystream[i];
93 | }
94 | }
95 | });
96 |
97 | CTRGladman.Decryptor = Encryptor;
98 |
99 | return CTRGladman;
100 | }());
101 |
102 |
103 |
--------------------------------------------------------------------------------
/static/bower_components/angular-animate/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular-animate
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular-animate
15 | ```
16 |
17 | Add a `
21 | ```
22 |
23 | Then add `ngAnimate` as a dependency for your app:
24 |
25 | ```javascript
26 | angular.module('myApp', ['ngAnimate']);
27 | ```
28 |
29 | Note that this package is not in CommonJS format, so doing `require('angular-animate')` will
30 | return `undefined`.
31 |
32 | ### bower
33 |
34 | ```shell
35 | bower install angular-animate
36 | ```
37 |
38 | Then add a `
42 | ```
43 |
44 | Then add `ngAnimate` as a dependency for your app:
45 |
46 | ```javascript
47 | angular.module('myApp', ['ngAnimate']);
48 | ```
49 |
50 | ## Documentation
51 |
52 | Documentation is available on the
53 | [AngularJS docs site](http://docs.angularjs.org/api/ngAnimate).
54 |
55 | ## License
56 |
57 | The MIT License
58 |
59 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in
69 | all copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
77 | THE SOFTWARE.
78 |
--------------------------------------------------------------------------------
/static/bower_components/angular-resource/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular-resource
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngResource).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular-resource
15 | ```
16 |
17 | Add a `
21 | ```
22 |
23 | Then add `ngResource` as a dependency for your app:
24 |
25 | ```javascript
26 | angular.module('myApp', ['ngResource']);
27 | ```
28 |
29 | Note that this package is not in CommonJS format, so doing `require('angular-resource')` will
30 | return `undefined`.
31 |
32 | ### bower
33 |
34 | ```shell
35 | bower install angular-resource
36 | ```
37 |
38 | Add a `
42 | ```
43 |
44 | Then add `ngResource` as a dependency for your app:
45 |
46 | ```javascript
47 | angular.module('myApp', ['ngResource']);
48 | ```
49 |
50 | ## Documentation
51 |
52 | Documentation is available on the
53 | [AngularJS docs site](http://docs.angularjs.org/api/ngResource).
54 |
55 | ## License
56 |
57 | The MIT License
58 |
59 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in
69 | all copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
77 | THE SOFTWARE.
78 |
--------------------------------------------------------------------------------
/static/bower_components/angular-sanitize/README.md:
--------------------------------------------------------------------------------
1 | # packaged angular-sanitize
2 |
3 | This repo is for distribution on `npm` and `bower`. The source for this module is in the
4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngSanitize).
5 | Please file issues and pull requests against that repo.
6 |
7 | ## Install
8 |
9 | You can install this package either with `npm` or with `bower`.
10 |
11 | ### npm
12 |
13 | ```shell
14 | npm install angular-sanitize
15 | ```
16 |
17 | Add a `
21 | ```
22 |
23 | Then add `ngSanitize` as a dependency for your app:
24 |
25 | ```javascript
26 | angular.module('myApp', ['ngSanitize']);
27 | ```
28 |
29 | Note that this package is not in CommonJS format, so doing `require('angular-sanitize')` will
30 | return `undefined`.
31 |
32 | ### bower
33 |
34 | ```shell
35 | bower install angular-sanitize
36 | ```
37 |
38 | Add a `
42 | ```
43 |
44 | Then add `ngSanitize` as a dependency for your app:
45 |
46 | ```javascript
47 | angular.module('myApp', ['ngSanitize']);
48 | ```
49 |
50 | ## Documentation
51 |
52 | Documentation is available on the
53 | [AngularJS docs site](http://docs.angularjs.org/api/ngSanitize).
54 |
55 | ## License
56 |
57 | The MIT License
58 |
59 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in
69 | all copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
77 | THE SOFTWARE.
78 |
--------------------------------------------------------------------------------
/static/bower_components/angular-loading-bar/Gruntfile.js:
--------------------------------------------------------------------------------
1 | /*global module:false*/
2 | module.exports = function(grunt) {
3 |
4 | grunt.initConfig({
5 |
6 | // Metadata.
7 | pkg: grunt.file.readJSON('package.json'),
8 | banner: '/*! \n * <%= pkg.title || pkg.name %> v<%= pkg.version %>\n' +
9 | ' * <%= pkg.homepage %>\n' +
10 | ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
11 | ' * License: <%= pkg.license %>\n' +
12 | ' */\n',
13 |
14 | // Task configuration.
15 | uglify: {
16 | options: {
17 | banner: '<%= banner %>',
18 | report: 'gzip'
19 | },
20 | build: {
21 | src: 'src/loading-bar.js',
22 | dest: 'build/loading-bar.min.js'
23 | }
24 | },
25 |
26 | cssmin: {
27 | options: {
28 | banner: '<%= banner %>',
29 | report: 'gzip'
30 | },
31 | minify: {
32 | src: 'src/loading-bar.css',
33 | dest: 'build/loading-bar.min.css'
34 | }
35 | },
36 |
37 | karma: {
38 | unit: {
39 | configFile: 'test/karma-angular-1.2.conf.js',
40 | singleRun: true,
41 | coverageReporter: {
42 | type: 'text',
43 | dir: 'coverage/'
44 | }
45 | },
46 | unit13: {
47 | configFile: 'test/karma-angular-1.3.conf.js',
48 | singleRun: true,
49 | coverageReporter: {
50 | type: 'text',
51 | dir: 'coverage/'
52 | }
53 | },
54 | watch: {
55 | configFile: 'test/karma-angular-1.2.conf.js',
56 | singleRun: false,
57 | reporters: ['progress'] // Don't display coverage
58 | }
59 | },
60 |
61 | jshint: {
62 | jshintrc: '.jshintrc',
63 | gruntfile: {
64 | src: 'Gruntfile.js'
65 | },
66 | src: {
67 | src: ['src/*.js']
68 | }
69 | },
70 |
71 | concat: {
72 | build: {
73 | options: {
74 | banner: '<%= banner %>'
75 | },
76 | files: {
77 | 'build/loading-bar.css': 'src/loading-bar.css',
78 | 'build/loading-bar.js': 'src/loading-bar.js',
79 | }
80 | }
81 | }
82 | });
83 |
84 | grunt.loadNpmTasks('grunt-contrib-uglify');
85 | grunt.loadNpmTasks('grunt-contrib-jshint');
86 | grunt.loadNpmTasks('grunt-contrib-cssmin');
87 | grunt.loadNpmTasks('grunt-contrib-concat');
88 | grunt.loadNpmTasks('grunt-karma');
89 |
90 | grunt.registerTask('default', ['jshint', 'karma:unit', 'karma:unit13', 'uglify', 'cssmin', 'concat:build']);
91 | grunt.registerTask('test', ['karma:watch']);
92 | grunt.registerTask('build', ['default']);
93 |
94 | };
95 |
--------------------------------------------------------------------------------
/static/components/k-scroll/k-scroll.css:
--------------------------------------------------------------------------------
1 | .k-scroller-wrapper > .scroll-bar {
2 | -webkit-transition-property: border-right-width, opacity;
3 | -moz-transition-property: border-right-width, opacity;
4 | transition-property: border-right-width, opacity;
5 | -webkit-transition-duration: .2s, .2s;
6 | -moz-transition-duration: .2s, .2s;
7 | transition-duration: .2s, .2s;
8 | -webkit-transition-delay: .4s, 1s;
9 | -moz-transition-delay: .4s, 1s;
10 | transition-delay: .4s, 1s;
11 | position: absolute;
12 | right: 0;
13 | top: 0;
14 | width: 1rem;
15 | height: 0;
16 | -webkit-box-sizing:border-box;
17 | -moz-box-sizing:border-box;
18 | box-sizing:border-box;
19 | z-index: 100;
20 | border-width: 0;
21 | border-style: solid;
22 | border-left-width: .2rem;
23 | border-left-color: transparent;
24 | border-right-color: rgba(0, 0, 0, .3);
25 | border-right-width: .3rem;
26 | opacity: 0;
27 | }
28 |
29 | .k-scroller-wrapper.hover > .scroll-bar {
30 | opacity: 1;
31 | -webkit-transition-duration: .2s, .2s;
32 | -moz-transition-duration: .2s, .2s;
33 | transition-duration: .2s, .2s;
34 | -webkit-transition-delay: .4s, 0;
35 | -moz-transition-delay: .4s, 0;
36 | transition-delay: .4s, 0;
37 | }
38 |
39 | .k-scroller-wrapper.dragging > .scroll-bar,
40 | .k-scroller-wrapper.scrolling > .scroll-bar,
41 | .k-scroller-wrapper.sliding > .scroll-bar {
42 | opacity: 1;
43 | -webkit-transition-duration: .2s, 0;
44 | -moz-transition-duration: .2s, 0;
45 | transition-duration: .2s, 0;
46 | -webkit-transition-delay: 0, 0;
47 | -moz-transition-delay: 0, 0;
48 | transition-delay: 0, 0;
49 | }
50 |
51 | .k-scroller-wrapper > .scroll-bar.hover,
52 | .k-scroller-wrapper > .scroll-bar.dragging {
53 | opacity: 1;
54 | border-right-width: .8rem;
55 | -webkit-transition-duration: .2s, 0;
56 | -moz-transition-duration: .2s, 0;
57 | transition-duration: .2s, 0;
58 | -webkit-transition-delay: 0, 0;
59 | -moz-transition-delay: 0, 0;
60 | transition-delay: 0, 0;
61 | }
62 |
63 | .k-scroller-wrapper > .scroll-bar.active,
64 | .k-scroller-wrapper > .scroll-bar.dragging {
65 | border-right-color: rgba(0, 0, 0, .4);
66 | }
67 |
68 | .k-scroller > .pulldown-hint,
69 | .k-scroller > .pullup-hint {
70 | height: 30rem;
71 | text-align: center;
72 | background-color: #222;
73 | position: absolute;
74 | color: white;
75 | left: 0;
76 | right: 0;
77 | }
78 | .k-scroller > .pulldown-hint > .content,
79 | .k-scroller > .pullup-hint > .content {
80 | position: relative;
81 | display: inline-block;
82 | width: 10rem;
83 | }
84 | .k-scroller > .pulldown-hint {
85 | line-height: 56rem;
86 | bottom: 100%;
87 | }
88 | .k-scroller > .pullup-hint {
89 | line-height: 4rem;
90 | top: 100%;
91 | }
92 |
--------------------------------------------------------------------------------
/static/js/home.js:
--------------------------------------------------------------------------------
1 | ;(function (angular) { 'use strict';
2 | angular.module('iro.home', ['kSlider'])
3 | .controller('HomeCtrl', ['$scope', '$interval', '$window', function ($scope, $interval, $window) {
4 | var clock = $interval(setDateTime, 1000);
5 |
6 | $scope.menuSlider = {
7 | sectionCount: 2,
8 | _currentSection: $window.sessionStorage['home.menuCurrentSection'] || 0
9 | };
10 |
11 | $scope.menuSections = [0, 1];
12 |
13 | $scope.$watch('menuSlider.currentSection', function (newValue) {
14 | $window.sessionStorage['home.menuCurrentSection'] = newValue;
15 | });
16 |
17 | $scope.$on('$destroy', function () {
18 | $interval.cancel(clock);
19 | });
20 |
21 | $scope.global.title = null;
22 |
23 | setDateTime();
24 |
25 | function setDateTime() {
26 | var now = new Date();
27 |
28 | $scope.time = getTime(now);
29 | $scope.date = getDate(now);
30 | $scope.day = getDay(now);
31 | }
32 |
33 | function getDate(now) {
34 | var month = now.getMonth() + 1;
35 | var date = now.getDate();
36 | var day = now.getDay();
37 |
38 | return numToHanzi(month) + '月' + numToHanzi(date) + '日';
39 | }
40 |
41 | function getTime(now) {
42 | var hours = now.getHours();
43 | var minutes = now.getMinutes();
44 |
45 | if (hours < 10) {
46 | hours = '0' + hours;
47 | }
48 | if (minutes < 10) {
49 | minutes = '0' + minutes;
50 | }
51 |
52 | return hours + ':' + minutes;
53 | }
54 |
55 | function getDay(now) {
56 | var day = now.getDay();
57 |
58 | var dayHanzi = {
59 | '0': '星期日',
60 | '1': '星期一',
61 | '2': '星期二',
62 | '3': '星期三',
63 | '4': '星期四',
64 | '5': '星期五',
65 | '6': '星期六'
66 | };
67 |
68 | return dayHanzi[day];
69 | }
70 |
71 | function numToHanzi(num) {
72 | var tens = Math.floor(num / 10);
73 | var units = Math.floor(num % 10);
74 |
75 | var numHanzi = {
76 | '0': '',
77 | '1': '一',
78 | '2': '二',
79 | '3': '三',
80 | '4': '四',
81 | '5': '五',
82 | '6': '六',
83 | '7': '七',
84 | '8': '八',
85 | '9': '九'
86 | };
87 |
88 | var result = '';
89 |
90 | if (tens > 0) {
91 | if (tens > 1) {
92 | result += numHanzi[tens];
93 | }
94 | result += '十';
95 | }
96 | result += numHanzi[units];
97 |
98 | return result;
99 | }
100 | }]);
101 | })(angular);
--------------------------------------------------------------------------------
/static/bower_components/jquery/src/core/ready.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../core/init",
4 | "../deferred"
5 | ], function( jQuery ) {
6 |
7 | // The deferred used on DOM ready
8 | var readyList;
9 |
10 | jQuery.fn.ready = function( fn ) {
11 | // Add the callback
12 | jQuery.ready.promise().done( fn );
13 |
14 | return this;
15 | };
16 |
17 | jQuery.extend({
18 | // Is the DOM ready to be used? Set to true once it occurs.
19 | isReady: false,
20 |
21 | // A counter to track how many items to wait for before
22 | // the ready event fires. See #6781
23 | readyWait: 1,
24 |
25 | // Hold (or release) the ready event
26 | holdReady: function( hold ) {
27 | if ( hold ) {
28 | jQuery.readyWait++;
29 | } else {
30 | jQuery.ready( true );
31 | }
32 | },
33 |
34 | // Handle when the DOM is ready
35 | ready: function( wait ) {
36 |
37 | // Abort if there are pending holds or we're already ready
38 | if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
39 | return;
40 | }
41 |
42 | // Remember that the DOM is ready
43 | jQuery.isReady = true;
44 |
45 | // If a normal DOM Ready event fired, decrement, and wait if need be
46 | if ( wait !== true && --jQuery.readyWait > 0 ) {
47 | return;
48 | }
49 |
50 | // If there are functions bound, to execute
51 | readyList.resolveWith( document, [ jQuery ] );
52 |
53 | // Trigger any bound ready events
54 | if ( jQuery.fn.triggerHandler ) {
55 | jQuery( document ).triggerHandler( "ready" );
56 | jQuery( document ).off( "ready" );
57 | }
58 | }
59 | });
60 |
61 | /**
62 | * The ready event handler and self cleanup method
63 | */
64 | function completed() {
65 | document.removeEventListener( "DOMContentLoaded", completed, false );
66 | window.removeEventListener( "load", completed, false );
67 | jQuery.ready();
68 | }
69 |
70 | jQuery.ready.promise = function( obj ) {
71 | if ( !readyList ) {
72 |
73 | readyList = jQuery.Deferred();
74 |
75 | // Catch cases where $(document).ready() is called after the browser event has already occurred.
76 | // We once tried to use readyState "interactive" here, but it caused issues like the one
77 | // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
78 | if ( document.readyState === "complete" ) {
79 | // Handle it asynchronously to allow scripts the opportunity to delay ready
80 | setTimeout( jQuery.ready );
81 |
82 | } else {
83 |
84 | // Use the handy event callback
85 | document.addEventListener( "DOMContentLoaded", completed, false );
86 |
87 | // A fallback to window.onload, that will always work
88 | window.addEventListener( "load", completed, false );
89 | }
90 | }
91 | return readyList.promise( obj );
92 | };
93 |
94 | // Kick off the DOM ready check even if the user does not
95 | jQuery.ready.promise();
96 |
97 | });
98 |
--------------------------------------------------------------------------------
/static/css/news.css:
--------------------------------------------------------------------------------
1 | #news{position:absolute;left:0;right:0;top:0;bottom:0;background-color:white}#news .news-view-container{position:absolute;left:0;right:0;top:0;bottom:0}#news .news-view-container.ng-leave{-moz-animation:leave 0.4s forwards;-webkit-animation:leave 0.4s forwards;animation:leave 0.4s forwards}#news .news-list{position:absolute;left:0;right:0;top:0;bottom:0;background-color:white;overflow:hidden;-moz-animation:enter 0.4s backwards;-webkit-animation:enter 0.4s backwards;animation:enter 0.4s backwards}#news .news-list .news-list-inner{position:absolute;left:0;right:0;top:0;min-height:100%;padding:1rem;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#news .news-list .news-list-inner li{position:relative;float:left;width:33.33333%;height:16rem}#news .news-list .news-list-inner li a{position:absolute;top:1rem;bottom:1rem;left:1rem;right:1rem;display:block;cursor:pointer;transition:background-color 0 .08s}#news .news-list .news-list-inner li a.visited{opacity:.5}#news .news-list .news-list-inner li a .thumb{position:absolute;top:0;bottom:2.4rem;left:0;right:0;background-repeat:no-repeat;background-position:center center;background-size:cover;background-color:white;transition:opacity 0 .08s}#news .news-list .news-list-inner li a .title{position:absolute;left:0;right:0;bottom:0;height:2.4rem;line-height:2.4rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;background-color:white;transition:background-color 0 .08s}#news .news-list .news-list-inner li a.active{background-color:black}#news .news-list .news-list-inner li a.active .thumb{opacity:.7}#news .news-list .news-list-inner li a.no-thumb .thumb{display:none}#news .news-list .news-list-inner li a.no-thumb .title{font-size:3.4rem;line-height:1.33em;top:.0;bottom:0;left:0;right:0;height:auto;position:absolute;white-space:normal}#news .news-list .news-list-inner li a.no-thumb.active .title{background-color:#ccc}#news .news-detail{position:absolute;left:0;right:0;top:0;bottom:0;overflow:hidden;background-color:white;-moz-animation:enter 0.4s backwards;-webkit-animation:enter 0.4s backwards;animation:enter 0.4s backwards}#news .news-detail .news-detail-inner{max-width:60rem;margin-left:auto;margin-right:auto;background-color:white;padding-left:1.2rem;padding-right:1.2rem;padding-bottom:6rem;-moz-user-select:text;-ms-user-select:text;-webkit-user-select:text;user-select:text;opacity:1}.wide-screen #news .news-detail .news-detail-inner{margin-top:2rem;margin-bottom:3rem;padding-left:3rem;padding-right:3rem}#news .news-detail .news-detail-inner .title{text-align:center;font-size:1.9rem;padding:1.2em 0}#news .news-detail .news-detail-inner .content{font-size:1.2rem;line-height:1.5em}#news .news-detail .news-detail-inner .content p{margin:1.2rem 0;text-indent:2em}#news .news-detail .news-detail-inner .content img{display:block;margin:auto;max-width:100% !important;height:auto !important}
2 |
--------------------------------------------------------------------------------
/static/bower_components/angular-loading-bar/build/loading-bar.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-loading-bar v0.6.0
3 | * https://chieffancypants.github.io/angular-loading-bar
4 | * Copyright (c) 2014 Wes Cruver
5 | * License: MIT
6 | */
7 | !function(){"use strict";angular.module("angular-loading-bar",["cfp.loadingBarInterceptor"]),angular.module("chieffancypants.loadingBar",["cfp.loadingBarInterceptor"]),angular.module("cfp.loadingBarInterceptor",["cfp.loadingBar"]).config(["$httpProvider",function(a){var b=["$q","$cacheFactory","$timeout","$rootScope","cfpLoadingBar",function(b,c,d,e,f){function g(){d.cancel(i),f.complete(),k=0,j=0}function h(b){var d,e=c.get("$http"),f=a.defaults;!b.cache&&!f.cache||b.cache===!1||"GET"!==b.method&&"JSONP"!==b.method||(d=angular.isObject(b.cache)?b.cache:angular.isObject(f.cache)?f.cache:e);var g=void 0!==d?void 0!==d.get(b.url):!1;return void 0!==b.cached&&g!==b.cached?b.cached:(b.cached=g,g)}var i,j=0,k=0,l=f.latencyThreshold;return{request:function(a){return a.ignoreLoadingBar||h(a)||(e.$broadcast("cfpLoadingBar:loading",{url:a.url}),0===j&&(i=d(function(){f.start()},l)),j++,f.set(k/j)),a},response:function(a){return a.config.ignoreLoadingBar||h(a.config)||(k++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url}),k>=j?g():f.set(k/j)),a},responseError:function(a){return a.config.ignoreLoadingBar||h(a.config)||(k++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url}),k>=j?g():f.set(k/j)),b.reject(a)}}}];a.interceptors.push(b)}]),angular.module("cfp.loadingBar",[]).provider("cfpLoadingBar",function(){this.includeSpinner=!0,this.includeBar=!0,this.latencyThreshold=100,this.startSize=.02,this.parentSelector="body",this.spinnerTemplate='