├── bundles ├── .gitignore ├── stocks │ ├── start.php │ ├── stocks.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── rss │ ├── start.php │ ├── rss.css │ ├── README │ ├── views │ │ └── small.php │ ├── libraries │ │ └── rss_feed.php │ └── controllers │ │ └── home.php ├── weather │ ├── start.php │ ├── weather.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── pingdom │ ├── start.php │ ├── readme.md │ ├── views │ │ ├── large.php │ │ ├── medium.php │ │ ├── small.php │ │ └── tiny.php │ ├── controllers │ │ └── home.php │ └── pingdom.css ├── authenticjobs │ ├── start.php │ ├── authenticjobs.css │ ├── views │ │ └── small.php │ └── README ├── twitter │ ├── start.php │ ├── twitter.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── analytics │ ├── start.php │ ├── lib │ │ └── googleanalytics.sample.php │ ├── views │ │ ├── top_content_medium.php │ │ ├── visitors_medium.php │ │ └── search_medium.php │ ├── config │ │ └── reports.php │ └── analytics.css ├── githubcommits │ ├── start.php │ ├── views │ │ ├── small.php │ │ └── medium.php │ └── controllers │ │ └── home.php ├── githubissues │ ├── php-github-api │ │ ├── lib │ │ │ └── Github │ │ │ │ ├── ApiInterface.php │ │ │ │ ├── Autoloader.php │ │ │ │ ├── HttpClientInterface.php │ │ │ │ ├── Api.php │ │ │ │ └── Api │ │ │ │ └── Commit.php │ │ └── LICENSE │ ├── start.php │ ├── views │ │ └── small.php │ ├── github.css │ └── controllers │ │ └── home.php ├── time │ ├── time.css │ ├── controllers │ │ └── home.php │ └── views │ │ └── small.php └── userscape │ └── autobundle │ ├── readme.md │ └── start.php ├── .gitignore ├── public ├── css │ ├── .gitignore │ └── style.css ├── img │ └── .gitignore ├── js │ ├── .gitignore │ └── core.js ├── bundles │ └── .gitignore ├── themes │ └── wood │ │ ├── bg.jpg │ │ ├── credits.md │ │ ├── ajax-loader-large.gif │ │ └── style.css ├── .htaccess ├── less │ ├── grid.less │ ├── utilities.less │ ├── component-animations.less │ ├── close.less │ ├── wells.less │ ├── hero-unit.less │ ├── layouts.less │ ├── breadcrumbs.less │ ├── pager.less │ ├── accordion.less │ ├── scaffolding.less │ ├── thumbnails.less │ ├── tooltip.less │ ├── labels.less │ ├── pagination.less │ ├── popovers.less │ ├── code.less │ ├── alerts.less │ ├── bootstrap.less │ ├── modals.less │ └── progress-bars.less └── index.php ├── storage ├── logs │ └── .gitignore ├── sessions │ └── .gitignore ├── database │ └── .gitignore ├── cache │ └── .gitignore ├── views │ └── .gitignore └── work │ └── .gitignore ├── application ├── tasks │ └── .gitignore ├── libraries │ └── .gitignore ├── migrations │ └── .gitignore ├── models │ └── .gitignore ├── config │ ├── .gitignore │ └── boards.php ├── tests │ └── example.test.php ├── controllers │ ├── base.php │ └── home.php ├── language │ └── en │ │ └── pagination.php ├── start.php ├── bundles.php └── views │ ├── layouts │ └── common.php │ └── error │ └── 500.php ├── laravel ├── cli │ ├── tasks │ │ ├── task.php │ │ ├── test │ │ │ ├── stub.xml │ │ │ └── phpunit.php │ │ ├── migrate │ │ │ ├── stub.php │ │ │ └── database.php │ │ ├── bundle │ │ │ ├── providers │ │ │ │ ├── github.php │ │ │ │ └── provider.php │ │ │ ├── repository.php │ │ │ └── publisher.php │ │ ├── session │ │ │ └── migration.php │ │ ├── key.php │ │ └── route.php │ └── artisan.php ├── database │ ├── query │ │ ├── grammars │ │ │ └── mysql.php │ │ └── join.php │ ├── expression.php │ ├── exception.php │ ├── connectors │ │ ├── connector.php │ │ ├── sqlite.php │ │ ├── sqlserver.php │ │ ├── postgres.php │ │ └── mysql.php │ └── schema │ │ └── grammars │ │ └── grammar.php ├── session │ └── drivers │ │ ├── sweeper.php │ │ ├── driver.php │ │ ├── apc.php │ │ ├── redis.php │ │ ├── cookie.php │ │ ├── memcached.php │ │ └── file.php ├── hash.php ├── cache │ └── drivers │ │ ├── apc.php │ │ ├── redis.php │ │ ├── memcached.php │ │ └── file.php ├── log.php ├── fluent.php ├── memcached.php ├── cache.php ├── event.php └── section.php ├── widgets ├── githubissues │ ├── php-github-api │ │ ├── lib │ │ │ └── Github │ │ │ │ ├── ApiInterface.php │ │ │ │ ├── Autoloader.php │ │ │ │ ├── HttpClientInterface.php │ │ │ │ ├── Api.php │ │ │ │ └── Api │ │ │ │ └── Commit.php │ │ └── LICENSE │ ├── views │ │ └── small.php │ ├── github.css │ └── controllers │ │ └── home.php ├── time │ ├── time.css │ ├── controllers │ │ └── home.php │ └── views │ │ └── small.php ├── rss │ ├── rss.css │ ├── README │ ├── views │ │ └── small.php │ ├── libraries │ │ └── rss_feed.php │ └── controllers │ │ └── home.php ├── authenticjobs │ ├── authenticjobs.css │ ├── views │ │ └── small.php │ └── README ├── stocks │ ├── stocks.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── weather │ ├── weather.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── pingdom │ ├── readme.md │ ├── views │ │ ├── large.php │ │ ├── medium.php │ │ ├── small.php │ │ └── tiny.php │ ├── controllers │ │ └── home.php │ └── pingdom.css ├── twitter │ ├── twitter.css │ ├── views │ │ └── small.php │ └── controllers │ │ └── home.php ├── githubcommits │ ├── views │ │ ├── small.php │ │ └── medium.php │ └── controllers │ │ └── home.php └── analytics │ ├── lib │ └── googleanalytics.sample.php │ ├── views │ ├── top_content_medium.php │ ├── visitors_medium.php │ └── search_medium.php │ ├── config │ └── reports.php │ └── analytics.css ├── artisan ├── readme.md ├── license.txt └── laravel.license.txt /bundles/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /public/css/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/js/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/tasks/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bundles/stocks/start.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/bundles/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/libraries/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/migrations/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/models/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/config/.gitignore: -------------------------------------------------------------------------------- 1 | local/* -------------------------------------------------------------------------------- /storage/database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite -------------------------------------------------------------------------------- /storage/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /storage/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /storage/work/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /bundles/rss/start.php: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine on 3 | 4 | RewriteCond %{REQUEST_FILENAME} !-f 5 | RewriteCond %{REQUEST_FILENAME} !-d 6 | 7 | RewriteRule ^(.*)$ index.php/$1 [L] 8 | -------------------------------------------------------------------------------- /bundles/authenticjobs/authenticjobs.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .job_list { 4 | height: 142px; 5 | overflow: auto !important; 6 | list-style: none; 7 | list-style-image: none; 8 | padding: 0; 9 | margin: 0; 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /widgets/authenticjobs/authenticjobs.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .job_list { 4 | height: 142px; 5 | overflow: auto !important; 6 | list-style: none; 7 | list-style-image: none; 8 | padding: 0; 9 | margin: 0; 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/less/grid.less: -------------------------------------------------------------------------------- 1 | // GRID SYSTEM 2 | // ----------- 3 | 4 | // Fixed (940px) 5 | #gridSystem > .generate(@gridColumns, @gridColumnWidth, @gridGutterWidth); 6 | 7 | // Fluid (940px) 8 | #fluidGridSystem > .generate(@gridColumns, @fluidGridColumnWidth, @fluidGridGutterWidth); 9 | -------------------------------------------------------------------------------- /laravel/database/query/grammars/mysql.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | {{directory}} 7 | 8 | 9 | -------------------------------------------------------------------------------- /application/tests/example.test.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /laravel/session/drivers/sweeper.php: -------------------------------------------------------------------------------- 1 | with('css', File::get(path('bundle').'time/time.css')); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /laravel/cli/tasks/migrate/stub.php: -------------------------------------------------------------------------------- 1 | with('css', File::get(BUNDLE_PATH.'time/time.css')); 13 | exit($view); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /public/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // COMPONENT ANIMATIONS 2 | // -------------------- 3 | 4 | .fade { 5 | .transition(opacity .15s linear); 6 | opacity: 0; 7 | &.in { 8 | opacity: 1; 9 | } 10 | } 11 | 12 | .collapse { 13 | .transition(height .35s ease); 14 | position:relative; 15 | overflow:hidden; 16 | height: 0; 17 | &.in { height: auto; } 18 | } 19 | -------------------------------------------------------------------------------- /application/controllers/base.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |

Stock Info for :

6 |
7 |
8 |

9 | 10 |
-------------------------------------------------------------------------------- /public/less/hero-unit.less: -------------------------------------------------------------------------------- 1 | // HERO UNIT 2 | // --------- 3 | 4 | .hero-unit { 5 | padding: 60px; 6 | margin-bottom: 30px; 7 | background-color: #f5f5f5; 8 | .border-radius(6px); 9 | h1 { 10 | margin-bottom: 0; 11 | font-size: 60px; 12 | line-height: 1; 13 | letter-spacing: -1px; 14 | } 15 | p { 16 | font-size: 18px; 17 | font-weight: 200; 18 | line-height: @baseLineHeight * 1.5; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /widgets/stocks/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Stock Info for :

6 |
7 |
8 |

9 | 10 |
-------------------------------------------------------------------------------- /public/less/layouts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Layouts 3 | // Fixed-width and fluid (with sidebar) layouts 4 | // -------------------------------------------- 5 | 6 | 7 | // Container (centered, fixed-width layouts) 8 | .container { 9 | .container-fixed(); 10 | } 11 | 12 | // Fluid layouts (left aligned, with sidebar, min- & max-width content) 13 | .container-fluid { 14 | padding-left: @gridGutterWidth; 15 | padding-right: @gridGutterWidth; 16 | .clearfix(); 17 | } -------------------------------------------------------------------------------- /bundles/pingdom/readme.md: -------------------------------------------------------------------------------- 1 | # Pingdom Widget 2 | 3 | Display the Uptime status of sites in your Pingdom account. 4 | 5 | Author: Sean Downey 6 | 7 | ## Usage 8 | 9 | You can display upto 6 sites or specify one. 10 | 11 | Required Parameters 12 | - key : Your Pingdom Rest API Key 13 | - email : Your Pingdom account email address 14 | - password : Your Pingdom account password 15 | 16 | Optional Parameters 17 | - checkid : Id of the check for one particular site 18 | 19 | -------------------------------------------------------------------------------- /widgets/pingdom/readme.md: -------------------------------------------------------------------------------- 1 | # Pingdom Widget 2 | 3 | Display the Uptime status of sites in your Pingdom account. 4 | 5 | Author: Sean Downey 6 | 7 | ## Usage 8 | 9 | You can display upto 6 sites or specify one. 10 | 11 | Required Parameters 12 | - key : Your Pingdom Rest API Key 13 | - email : Your Pingdom account email address 14 | - password : Your Pingdom account password 15 | 16 | Optional Parameters 17 | - checkid : Id of the check for one particular site 18 | 19 | -------------------------------------------------------------------------------- /bundles/githubissues/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Issues for

6 |
7 |
8 | 15 |
16 | 17 | -------------------------------------------------------------------------------- /widgets/githubissues/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Issues for

6 |
7 |
8 | 15 |
16 | 17 | -------------------------------------------------------------------------------- /bundles/rss/README: -------------------------------------------------------------------------------- 1 | Name: RSS Feed widget 2 | 3 | Author: Jeff Madsen (www.codebyjeff.com) 4 | 5 | Date: 2012-01-10 6 | 7 | Version: 1.0 8 | 9 | This widget allow you to create a simple rss feed and configure the number of posts you'd like to display. 10 | 11 | In the main application/views/home/index.php, add: 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /widgets/rss/README: -------------------------------------------------------------------------------- 1 | Name: RSS Feed widget 2 | 3 | Author: Jeff Madsen (www.codebyjeff.com) 4 | 5 | Date: 2012-01-10 6 | 7 | Version: 1.0 8 | 9 | This widget allow you to create a simple rss feed and configure the number of posts you'd like to display. 10 | 11 | In the main application/views/home/index.php, add: 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /public/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // BREADCRUMBS 2 | // ----------- 3 | 4 | .breadcrumb { 5 | padding: 7px 14px; 6 | margin: 0 0 @baseLineHeight; 7 | #gradient > .vertical(@white, #f5f5f5); 8 | border: 1px solid #ddd; 9 | .border-radius(3px); 10 | .box-shadow(inset 0 1px 0 @white); 11 | li { 12 | display: inline-block; 13 | text-shadow: 0 1px 0 @white; 14 | } 15 | .divider { 16 | padding: 0 5px; 17 | color: @grayLight; 18 | } 19 | .active a { 20 | color: @grayDark; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /laravel/cli/tasks/bundle/providers/github.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ); -------------------------------------------------------------------------------- /bundles/rss/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

6 |
7 |
8 | 9 | 10 | 11 | 19 | 20 |

21 | 22 |
-------------------------------------------------------------------------------- /widgets/rss/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

6 |
7 |
8 | 9 | 10 | 11 | 19 | 20 |

21 | 22 |
-------------------------------------------------------------------------------- /bundles/twitter/twitter.css: -------------------------------------------------------------------------------- 1 | .twitter ul { 2 | height: 142px; 3 | overflow: auto; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .twitter ul li:first-child { 10 | border-top: none; 11 | } 12 | .twitter li { 13 | padding: 9px 10px; 14 | border-bottom: 1px solid #111; 15 | border-top: 1px solid #666667; 16 | height: auto; 17 | padding: 10px; 18 | position: relative; 19 | line-height: 120%; 20 | } 21 | .twitter .msg { 22 | float: left; 23 | min-width: 150px; 24 | width: 75%; 25 | } 26 | .twitter .name { 27 | float: right; 28 | color: #FFA84C; 29 | text-align: left; 30 | width: 20%; 31 | } -------------------------------------------------------------------------------- /widgets/twitter/twitter.css: -------------------------------------------------------------------------------- 1 | .twitter ul { 2 | height: 142px; 3 | overflow: auto; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .twitter ul li:first-child { 10 | border-top: none; 11 | } 12 | .twitter li { 13 | padding: 9px 10px; 14 | border-bottom: 1px solid #111; 15 | border-top: 1px solid #666667; 16 | height: auto; 17 | padding: 10px; 18 | position: relative; 19 | line-height: 120%; 20 | } 21 | .twitter .msg { 22 | float: left; 23 | min-width: 150px; 24 | width: 75%; 25 | } 26 | .twitter .name { 27 | float: right; 28 | color: #FFA84C; 29 | text-align: left; 30 | width: 20%; 31 | } -------------------------------------------------------------------------------- /public/less/accordion.less: -------------------------------------------------------------------------------- 1 | // ACCORDION 2 | // --------- 3 | 4 | 5 | // Parent container 6 | .accordion { 7 | margin-bottom: @baseLineHeight; 8 | } 9 | 10 | // Group == heading + body 11 | .accordion-group { 12 | margin-bottom: 2px; 13 | border: 1px solid #e5e5e5; 14 | .border-radius(4px); 15 | } 16 | .accordion-heading { 17 | border-bottom: 0; 18 | } 19 | .accordion-heading .accordion-toggle { 20 | display: block; 21 | padding: 8px 15px; 22 | } 23 | 24 | // Inner needs the styles because you can't animate properly with any styles on the element 25 | .accordion-inner { 26 | padding: 9px 15px; 27 | border-top: 1px solid #e5e5e5; 28 | } 29 | -------------------------------------------------------------------------------- /bundles/twitter/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Twitter Search for

6 |
7 |
8 | 22 |
-------------------------------------------------------------------------------- /widgets/twitter/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Twitter Search for

6 |
7 |
8 | 22 |
-------------------------------------------------------------------------------- /public/less/scaffolding.less: -------------------------------------------------------------------------------- 1 | // Scaffolding 2 | // Basic and global styles for generating a grid system, structural layout, and page templates 3 | // ------------------------------------------------------------------------------------------- 4 | 5 | 6 | // STRUCTURAL LAYOUT 7 | // ----------------- 8 | 9 | body { 10 | margin: 0; 11 | font-family: @baseFontFamily; 12 | font-size: @baseFontSize; 13 | line-height: @baseLineHeight; 14 | color: @textColor; 15 | background-color: @white; 16 | } 17 | 18 | 19 | // LINKS 20 | // ----- 21 | 22 | a { 23 | color: @linkColor; 24 | text-decoration: none; 25 | } 26 | a:hover { 27 | color: @linkColorHover; 28 | text-decoration: underline; 29 | } 30 | -------------------------------------------------------------------------------- /bundles/githubcommits/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Commits for

6 |
7 |
8 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /widgets/githubcommits/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Commits for

6 |
7 |
8 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /laravel/session/drivers/driver.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |

Authentic Jobs

6 |
7 |
8 | 9 | 18 | 19 |

20 | 21 |
-------------------------------------------------------------------------------- /widgets/authenticjobs/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Authentic Jobs

6 |
7 |
8 | 9 | 18 | 19 |

20 | 21 |
-------------------------------------------------------------------------------- /bundles/githubcommits/views/medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Commits for

6 |
7 |
8 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /bundles/githubissues/github.css: -------------------------------------------------------------------------------- 1 | .github ul { 2 | height: 142px; 3 | overflow: hidden; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .github ul li:first-child { 10 | border-top: none; 11 | } 12 | .github li { 13 | padding: 9px 10px; 14 | border-bottom: 1px solid #111; 15 | border-top: 1px solid #666667; 16 | height: auto; 17 | padding: 10px; 18 | position: relative; 19 | line-height: 120%; 20 | } 21 | .github .msg { 22 | float: left; 23 | } 24 | .github .name { 25 | float: right; 26 | color: #FFA84C; 27 | } 28 | .github_medium .name { 29 | float: right; 30 | } 31 | .github_medium .name:after { 32 | color: #fff; 33 | content:" | "; 34 | } 35 | .github_medium .date { 36 | float: right; 37 | color: #fff; 38 | padding: 0 5px 0 3px; 39 | } -------------------------------------------------------------------------------- /widgets/githubcommits/views/medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Github Commits for

6 |
7 |
8 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /widgets/githubissues/github.css: -------------------------------------------------------------------------------- 1 | .github ul { 2 | height: 142px; 3 | overflow: hidden; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .github ul li:first-child { 10 | border-top: none; 11 | } 12 | .github li { 13 | padding: 9px 10px; 14 | border-bottom: 1px solid #111; 15 | border-top: 1px solid #666667; 16 | height: auto; 17 | padding: 10px; 18 | position: relative; 19 | line-height: 120%; 20 | } 21 | .github .msg { 22 | float: left; 23 | } 24 | .github .name { 25 | float: right; 26 | color: #FFA84C; 27 | } 28 | .github_medium .name { 29 | float: right; 30 | } 31 | .github_medium .name:after { 32 | color: #fff; 33 | content:" | "; 34 | } 35 | .github_medium .date { 36 | float: right; 37 | color: #fff; 38 | padding: 0 5px 0 3px; 39 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/bundle/repository.php: -------------------------------------------------------------------------------- 1 | api.$bundle); 25 | 26 | return json_decode($bundle, true); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /laravel/database/expression.php: -------------------------------------------------------------------------------- 1 | value = $value; 21 | } 22 | 23 | /** 24 | * Get the string value of the database expression. 25 | * 26 | * @return string 27 | */ 28 | public function get() 29 | { 30 | return $this->value; 31 | } 32 | 33 | /** 34 | * Get the string value of the database expression. 35 | * 36 | * @return string 37 | */ 38 | public function __toString() 39 | { 40 | return $this->get(); 41 | } 42 | 43 | } -------------------------------------------------------------------------------- /public/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // THUMBNAILS 2 | // ---------- 3 | 4 | .thumbnails { 5 | margin-left: -@gridGutterWidth; 6 | list-style: none; 7 | .clearfix(); 8 | } 9 | .thumbnails > li { 10 | float: left; 11 | margin: 0 0 @baseLineHeight @gridGutterWidth; 12 | } 13 | .thumbnail { 14 | display: block; 15 | padding: 4px; 16 | line-height: 1; 17 | border: 1px solid #ddd; 18 | .border-radius(4px); 19 | .box-shadow(0 1px 1px rgba(0,0,0,.075)); 20 | } 21 | // Add a hover state for linked versions only 22 | a.thumbnail:hover { 23 | border-color: @linkColor; 24 | .box-shadow(0 1px 4px rgba(0,105,214,.25)); 25 | } 26 | // Images and captions 27 | .thumbnail > img { 28 | display: block; 29 | max-width: 100%; 30 | margin-left: auto; 31 | margin-right: auto; 32 | } 33 | .thumbnail .caption { 34 | padding: 9px; 35 | } 36 | -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | 8 | * @link http://laravel.com 9 | */ 10 | 11 | // -------------------------------------------------------------- 12 | // Set the core Laravel path constants. 13 | // -------------------------------------------------------------- 14 | require 'paths.php'; 15 | 16 | // -------------------------------------------------------------- 17 | // Bootstrap the Laravel core. 18 | // -------------------------------------------------------------- 19 | require path('sys').'core.php'; 20 | 21 | // -------------------------------------------------------------- 22 | // Launch the Laravel "Artisan" CLI. 23 | // -------------------------------------------------------------- 24 | require path('sys').'cli/artisan'.EXT; -------------------------------------------------------------------------------- /application/config/boards.php: -------------------------------------------------------------------------------- 1 | array( 15 | 'name' => 'Top Dashboard', 16 | 'theme' => 'wood', 17 | 'widgets' => array( 18 | 'weather', 19 | 'githubissues_laravel', 20 | 'githubcommits_laravel', 21 | 'twitter_laravel', 22 | 'twitter_helpspot', 23 | 'twitter_ericlbarnes', 24 | 'stocks', 25 | 'rss', 26 | ), 27 | ), 28 | 29 | 'number2' => array( 30 | 'name' => 'Dashboard Number 2', 31 | 'widgets' => array( 32 | 'githubissues_statusb', 33 | 'githubcommits_statusb', 34 | 'twitter_ericlbarnes', 35 | ), 36 | ), 37 | 38 | ); 39 | -------------------------------------------------------------------------------- /bundles/userscape/autobundle/readme.md: -------------------------------------------------------------------------------- 1 | Auto Bundle removes the need to manually add each bundle to the application/bundles.php file. Just drop a new bundle in to the bundles directory and it will be registered and started. 2 | 3 | If your bundle contains a routes.php file it will register a handler for you of your bundles name. If you want your bundle to use an alternate handle (ex: your bundle is named "pizza" but you want it to respond to "admin") then you should still manually add your bundle to application/bundles.php. 4 | 5 | Bundles registered with application/bundles.php will not be auto loaded. 6 | 7 | ## Installation 8 | 9 | Install it just like any Laravel bundle. Drop it in your bundles folder in *bundles/userscape/autobundle* 10 | 11 | After that add this line in the array of *application/bundles.php* 12 | 13 | return array( 14 | 'autobundle' => array('location'=>'userscape/autobundle', 'auto' => true), 15 | ); -------------------------------------------------------------------------------- /bundles/rss/libraries/rss_feed.php: -------------------------------------------------------------------------------- 1 | channel->item as $entry) { 16 | $i++; 17 | $return_array[$i]['link'] = (string)$entry->link; 18 | $return_array[$i]['title'] = (string)$entry->title; 19 | if ($i == $count) 20 | { 21 | break; 22 | } 23 | } 24 | } 25 | 26 | if (empty($return_array)) 27 | { 28 | $return_array = 'No results for your search.'; 29 | } 30 | return $return_array; 31 | } 32 | 33 | 34 | 35 | 36 | } -------------------------------------------------------------------------------- /widgets/rss/libraries/rss_feed.php: -------------------------------------------------------------------------------- 1 | channel->item as $entry) { 16 | $i++; 17 | $return_array[$i]['link'] = (string)$entry->link; 18 | $return_array[$i]['title'] = (string)$entry->title; 19 | if ($i == $count) 20 | { 21 | break; 22 | } 23 | } 24 | } 25 | 26 | if (empty($return_array)) 27 | { 28 | $return_array = 'No results for your search.'; 29 | } 30 | return $return_array; 31 | } 32 | 33 | 34 | 35 | 36 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/session/migration.php: -------------------------------------------------------------------------------- 1 | create(); 15 | 16 | // The session table consists simply of an ID, a UNIX timestamp to 17 | // indicate the expiration time, and a blob field which will hold 18 | // the serialized form of the session payload. 19 | $table->string('id')->length(40)->primary('session_primary'); 20 | 21 | $table->integer('last_activity'); 22 | 23 | $table->text('data'); 24 | }); 25 | } 26 | 27 | /** 28 | * Revert the changes to the database. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table(Config::get('session.table'), function($table) 35 | { 36 | $table->drop(); 37 | }); 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /bundles/weather/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Weather for

6 |
7 |
8 |
9 |

CUR

10 | 11 |
°
12 |
13 | 14 | $day): ?> 15 | 16 |
17 |

18 | 19 |
°
20 |
°
21 |
22 | 23 | 24 | 25 |
26 | 27 | -------------------------------------------------------------------------------- /widgets/weather/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Weather for

6 |
7 |
8 |
9 |

CUR

10 | 11 |
°
12 |
13 | 14 | $day): ?> 15 | 16 |
17 |

18 | 19 |
°
20 |
°
21 |
22 | 23 | 24 | 25 |
26 | 27 | -------------------------------------------------------------------------------- /bundles/githubissues/php-github-api/lib/Github/Autoloader.php: -------------------------------------------------------------------------------- 1 | .top(); } 18 | &.left .tooltip-arrow { #popoverArrow > .left(); } 19 | &.bottom .tooltip-arrow { #popoverArrow > .bottom(); } 20 | &.right .tooltip-arrow { #popoverArrow > .right(); } 21 | } 22 | .tooltip-inner { 23 | max-width: 200px; 24 | padding: 3px 8px; 25 | color: @white; 26 | text-align: center; 27 | text-decoration: none; 28 | background-color: @black; 29 | .border-radius(4px); 30 | } 31 | .tooltip-arrow { 32 | position: absolute; 33 | width: 0; 34 | height: 0; 35 | } 36 | -------------------------------------------------------------------------------- /widgets/githubissues/php-github-api/lib/Github/Autoloader.php: -------------------------------------------------------------------------------- 1 | inner = $inner; 23 | 24 | $this->setMessage($sql, $bindings); 25 | } 26 | 27 | /** 28 | * Set the exception message to include the SQL and bindings. 29 | * 30 | * @param string $sql 31 | * @param array $bindings 32 | * @return void 33 | */ 34 | protected function setMessage($sql, $bindings) 35 | { 36 | $this->message = $this->inner->getMessage(); 37 | 38 | $this->message .= "\n\nSQL: ".$sql."\n\nBindings: ".var_export($bindings, true); 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /bundles/rss/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_rss_feed($settings['url'], $settings['feedcount']); 18 | } 19 | else 20 | { 21 | $rss_feed = "No available settings"; 22 | } 23 | } 24 | return View::make($view_file) 25 | ->with('rss_feed', $rss_feed) 26 | ->with('site', $site) 27 | ->with('css', File::get(path('bundle').'rss/rss.css')); 28 | } 29 | 30 | private function _get_rss_feed($url, $feedcount) 31 | { 32 | $rf = new rss_feed(); 33 | $data = $rf->get_rss_data($url, $feedcount); 34 | return $data; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /laravel/database/connectors/connector.php: -------------------------------------------------------------------------------- 1 | PDO::CASE_LOWER, 12 | PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 13 | PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, 14 | PDO::ATTR_STRINGIFY_FETCHES => false, 15 | PDO::ATTR_EMULATE_PREPARES => false, 16 | ); 17 | 18 | /** 19 | * Establish a PDO database connection. 20 | * 21 | * @param array $config 22 | * @return PDO 23 | */ 24 | abstract public function connect($config); 25 | 26 | /** 27 | * Get the PDO connection options for the configuration. 28 | * 29 | * Developer specified options will override the default connection options. 30 | * 31 | * @param array $config 32 | * @return array 33 | */ 34 | protected function options($config) 35 | { 36 | $options = (isset($config['options'])) ? $config['options'] : array(); 37 | 38 | return $this->options + $options; 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /widgets/rss/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_rss_feed($settings['url'], $settings['feedcount']); 22 | } 23 | else { 24 | $rss_feed = "No available settings"; 25 | } 26 | 27 | 28 | } 29 | $view = View::make($view_file) 30 | ->with('rss_feed', $rss_feed) 31 | ->with('site', $site) 32 | ->with('css', File::get(BUNDLE_PATH.'rss/rss.css')); 33 | exit($view); 34 | 35 | } 36 | 37 | private function _get_rss_feed($url, $feedcount) 38 | { 39 | $rf = new rss_feed(); 40 | $data = $rf->get_rss_data($url, $feedcount); 41 | return $data; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /laravel/database/connectors/sqlite.php: -------------------------------------------------------------------------------- 1 | options($config); 14 | 15 | // SQLite provides supported for "in-memory" databases, which exist only for the 16 | // lifetime of the request. Any given in-memory database may only have one PDO 17 | // connection open to it at a time. These are usually for testing. 18 | if ($config['database'] == ':memory:') 19 | { 20 | return new PDO('sqlite::memory:', null, null, $options); 21 | } 22 | 23 | // SQLite databases will be created automatically if they do not exist, so we 24 | // will not check for the existence of the database file before establishing 25 | // the PDO connection to the database. 26 | $path = path('storage').'database'.DS.$config['database'].'.sqlite'; 27 | 28 | return new PDO('sqlite:'.$path, null, null, $options); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /laravel/database/connectors/sqlserver.php: -------------------------------------------------------------------------------- 1 | PDO::CASE_LOWER, 12 | PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 13 | PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, 14 | PDO::ATTR_STRINGIFY_FETCHES => false, 15 | ); 16 | 17 | /** 18 | * Establish a PDO database connection. 19 | * 20 | * @param array $config 21 | * @return PDO 22 | */ 23 | public function connect($config) 24 | { 25 | extract($config); 26 | 27 | // Format the SQL Server connection string. This connection string format can 28 | // also be used to connect to Azure SQL Server databases. The port is defined 29 | // directly after the server name, so we'll create that first. 30 | $port = (isset($port)) ? ','.$port : ''; 31 | 32 | $dsn = "sqlsrv:Server={$host}{$port};Database={$database}"; 33 | 34 | return new PDO($dsn, $username, $password, $this->options($config)); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /laravel/database/schema/grammars/grammar.php: -------------------------------------------------------------------------------- 1 | {'type_'.$column->type}($column); 17 | } 18 | 19 | /** 20 | * Wrap a value in keyword identifiers. 21 | * 22 | * @param Table|string $value 23 | * @return string 24 | */ 25 | public function wrap($value) 26 | { 27 | // This method is primarily for convenience so we can just pass a 28 | // column or table instance into the wrap method without sending 29 | // in the name each time we need to wrap one of these objects. 30 | if ($value instanceof Table) 31 | { 32 | return $this->wrap_table($value->name); 33 | } 34 | elseif ($value instanceof Fluent) 35 | { 36 | $value = $value->name; 37 | } 38 | 39 | return parent::wrap($value); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /bundles/analytics/lib/googleanalytics.sample.php: -------------------------------------------------------------------------------- 1 | setProfile('{GA Profile ID}'); 10 | 11 | // set the date range we want for the report - format is YYYY-MM-DD 12 | $ga->setDateRange('2009-04-01','2009-04-07'); 13 | 14 | // get the report for date and country filtered by Australia, showing pageviews and visits 15 | $report = $ga->getReport( 16 | array('dimensions'=>urlencode('ga:date,ga:country'), 17 | 'metrics'=>urlencode('ga:pageviews,ga:visits'), 18 | 'filters'=>urlencode('ga:country=@Australia'), 19 | 'sort'=>'-ga:pageviews' 20 | ) 21 | ); 22 | 23 | //print out the $report array 24 | print "
";
25 | 	print_r($report);
26 | 	print "
"; 27 | 28 | } catch (Exception $e) { 29 | print 'Error: ' . $e->getMessage(); 30 | } 31 | 32 | ?> -------------------------------------------------------------------------------- /widgets/analytics/lib/googleanalytics.sample.php: -------------------------------------------------------------------------------- 1 | setProfile('{GA Profile ID}'); 10 | 11 | // set the date range we want for the report - format is YYYY-MM-DD 12 | $ga->setDateRange('2009-04-01','2009-04-07'); 13 | 14 | // get the report for date and country filtered by Australia, showing pageviews and visits 15 | $report = $ga->getReport( 16 | array('dimensions'=>urlencode('ga:date,ga:country'), 17 | 'metrics'=>urlencode('ga:pageviews,ga:visits'), 18 | 'filters'=>urlencode('ga:country=@Australia'), 19 | 'sort'=>'-ga:pageviews' 20 | ) 21 | ); 22 | 23 | //print out the $report array 24 | print "
";
25 | 	print_r($report);
26 | 	print "
"; 27 | 28 | } catch (Exception $e) { 29 | print 'Error: ' . $e->getMessage(); 30 | } 31 | 32 | ?> -------------------------------------------------------------------------------- /bundles/githubissues/php-github-api/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 Thibault Duplessis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /laravel/database/connectors/postgres.php: -------------------------------------------------------------------------------- 1 | options($config)); 26 | 27 | // If a character set has been specified, we'll execute a query against 28 | // the database to set the correct character set. By default, this is 29 | // set to UTF-8 which should be fine for most scenarios. 30 | if (isset($config['charset'])) 31 | { 32 | $connection->prepare("SET NAMES '{$config['charset']}'")->execute(); 33 | } 34 | 35 | return $connection; 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /widgets/githubissues/php-github-api/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 Thibault Duplessis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /public/less/pagination.less: -------------------------------------------------------------------------------- 1 | // PAGINATION 2 | // ---------- 3 | 4 | .pagination { 5 | height: @baseLineHeight * 2; 6 | margin: @baseLineHeight 0; 7 | } 8 | .pagination ul { 9 | display: inline-block; 10 | .ie7-inline-block(); 11 | margin-left: 0; 12 | margin-bottom: 0; 13 | .border-radius(3px); 14 | .box-shadow(0 1px 2px rgba(0,0,0,.05)); 15 | } 16 | .pagination li { 17 | display: inline; 18 | } 19 | .pagination a { 20 | float: left; 21 | padding: 0 14px; 22 | line-height: (@baseLineHeight * 2) - 2; 23 | text-decoration: none; 24 | border: 1px solid #ddd; 25 | border-left-width: 0; 26 | } 27 | .pagination a:hover, 28 | .pagination .active a { 29 | background-color: #f5f5f5; 30 | } 31 | .pagination .active a { 32 | color: @grayLight; 33 | cursor: default; 34 | } 35 | .pagination .disabled a, 36 | .pagination .disabled a:hover { 37 | color: @grayLight; 38 | background-color: transparent; 39 | cursor: default; 40 | } 41 | .pagination li:first-child a { 42 | border-left-width: 1px; 43 | .border-radius(3px 0 0 3px); 44 | } 45 | .pagination li:last-child a { 46 | .border-radius(0 3px 3px 0); 47 | } 48 | 49 | // Centered 50 | .pagination-centered { 51 | text-align: center; 52 | } 53 | .pagination-right { 54 | text-align: right; 55 | } 56 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 8 | * @link http://laravel.com 9 | */ 10 | 11 | // -------------------------------------------------------------- 12 | // Tick... Tock... Tick... Tock... 13 | // -------------------------------------------------------------- 14 | define('LARAVEL_START', microtime(true)); 15 | 16 | // -------------------------------------------------------------- 17 | // Indicate that the request is from the web. 18 | // -------------------------------------------------------------- 19 | $web = true; 20 | 21 | // -------------------------------------------------------------- 22 | // Set the core Laravel path constants. 23 | // -------------------------------------------------------------- 24 | require '../paths.php'; 25 | 26 | // -------------------------------------------------------------- 27 | // Unset the temporary web variable. 28 | // -------------------------------------------------------------- 29 | unset($web); 30 | 31 | // -------------------------------------------------------------- 32 | // Launch Laravel. 33 | // -------------------------------------------------------------- 34 | require path('sys').'laravel.php'; 35 | -------------------------------------------------------------------------------- /laravel/database/connectors/mysql.php: -------------------------------------------------------------------------------- 1 | options($config)); 31 | 32 | // If a character set has been specified, we'll execute a query against 33 | // the database to set the correct character set. By default, this is 34 | // set to UTF-8 which should be fine for most scenarios. 35 | if (isset($config['charset'])) 36 | { 37 | $connection->prepare("SET NAMES '{$config['charset']}'")->execute(); 38 | } 39 | 40 | return $connection; 41 | } 42 | 43 | } -------------------------------------------------------------------------------- /public/less/popovers.less: -------------------------------------------------------------------------------- 1 | // POPOVERS 2 | // -------- 3 | 4 | .popover { 5 | position: absolute; 6 | top: 0; 7 | left: 0; 8 | z-index: @zindexPopover; 9 | display: none; 10 | padding: 5px; 11 | &.top { margin-top: -5px; } 12 | &.right { margin-left: 5px; } 13 | &.bottom { margin-top: 5px; } 14 | &.left { margin-left: -5px; } 15 | &.top .arrow { #popoverArrow > .top(); } 16 | &.right .arrow { #popoverArrow > .right(); } 17 | &.bottom .arrow { #popoverArrow > .bottom(); } 18 | &.left .arrow { #popoverArrow > .left(); } 19 | .arrow { 20 | position: absolute; 21 | width: 0; 22 | height: 0; 23 | } 24 | } 25 | .popover-inner { 26 | padding: 3px; 27 | width: 280px; 28 | overflow: hidden; 29 | background: @black; // has to be full background declaration for IE fallback 30 | background: rgba(0,0,0,.8); 31 | .border-radius(6px); 32 | .box-shadow(0 3px 7px rgba(0,0,0,0.3)); 33 | } 34 | .popover-title { 35 | padding: 9px 15px; 36 | line-height: 1; 37 | background-color: #f5f5f5; 38 | border-bottom:1px solid #eee; 39 | .border-radius(3px 3px 0 0); 40 | } 41 | .popover-content { 42 | padding: 14px; 43 | background-color: @white; 44 | .border-radius(0 0 3px 3px); 45 | .background-clip(padding-box); 46 | p, ul, ol { 47 | margin-bottom: 0; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /widgets/weather/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_weather(); 12 | print_r($weather); 13 | $view = View::make('weather::'.$size) 14 | ->with('weather', $weather); 15 | exit($view); 16 | } 17 | 18 | public function post_index() 19 | { 20 | $view_file = 'weather::'.Input::get('size', 'small'); 21 | 22 | $zip = Input::get('zip', '28056'); 23 | $config_key = Input::get('config'); 24 | 25 | if (!empty($config_key)) 26 | { 27 | $settings = Config::get('widgets.'.$config_key); 28 | if (!empty($settings)) { 29 | $zip = $settings['zip']; 30 | } 31 | else { 32 | echo "No available settings"; 33 | } 34 | } 35 | 36 | $weather = $this->_get_weather($zip); 37 | $view = View::make($view_file) 38 | ->with('weather', $weather) 39 | ->with('css', File::get(BUNDLE_PATH.'weather/weather.css')); 40 | exit($view); 41 | } 42 | 43 | private function _get_weather($zip) 44 | { 45 | $w = new googleWeather(); 46 | $w->enable_cache = 0; 47 | $data = $w->get_weather_data($zip); 48 | $data['location'] = 'Charlotte'; 49 | return $data; 50 | } 51 | } -------------------------------------------------------------------------------- /bundles/analytics/views/top_content_medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 | 13 | 34 | 35 |
36 |
-------------------------------------------------------------------------------- /widgets/analytics/views/top_content_medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 | 13 | 34 | 35 |
36 |
-------------------------------------------------------------------------------- /laravel/session/drivers/apc.php: -------------------------------------------------------------------------------- 1 | apc = $apc; 21 | } 22 | 23 | /** 24 | * Load a session from storage by a given ID. 25 | * 26 | * If no session is found for the ID, null will be returned. 27 | * 28 | * @param string $id 29 | * @return array 30 | */ 31 | public function load($id) 32 | { 33 | return $this->apc->get($id); 34 | } 35 | 36 | /** 37 | * Save a given session to storage. 38 | * 39 | * @param array $session 40 | * @param array $config 41 | * @param bool $exists 42 | * @return void 43 | */ 44 | public function save($session, $config, $exists) 45 | { 46 | $this->apc->put($session['id'], $session, $config['lifetime']); 47 | } 48 | 49 | /** 50 | * Delete a session from storage by a given ID. 51 | * 52 | * @param string $id 53 | * @return void 54 | */ 55 | public function delete($id) 56 | { 57 | $this->apc->forget($id); 58 | } 59 | 60 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/bundle/publisher.php: -------------------------------------------------------------------------------- 1 | move($path.'public', path('public').'bundles'.DS.$bundle); 20 | 21 | echo "Assets published for bundle [$bundle].".PHP_EOL; 22 | } 23 | 24 | /** 25 | * Copy the contents of a bundle's assets to the public folder. 26 | * 27 | * @param string $source 28 | * @param string $destination 29 | * @return void 30 | */ 31 | protected function move($source, $destination) 32 | { 33 | File::cpdir($source, $destination); 34 | } 35 | 36 | /** 37 | * Get the "to" location of the bundle's assets. 38 | * 39 | * @param string $bundle 40 | * @return string 41 | */ 42 | protected function to($bundle) 43 | { 44 | return path('public').'bundles'.DS.$bundle.DS; 45 | } 46 | 47 | /** 48 | * Get the "from" location of the bundle's assets. 49 | * 50 | * @param string $bundle 51 | * @return string 52 | */ 53 | protected function from($bundle) 54 | { 55 | return Bundle::path($bundle).'public'; 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /laravel/session/drivers/redis.php: -------------------------------------------------------------------------------- 1 | redis = $redis; 21 | } 22 | 23 | /** 24 | * Load a session from storage by a given ID. 25 | * 26 | * If no session is found for the ID, null will be returned. 27 | * 28 | * @param string $id 29 | * @return array 30 | */ 31 | public function load($id) 32 | { 33 | return $this->redis->get($id); 34 | } 35 | 36 | /** 37 | * Save a given session to storage. 38 | * 39 | * @param array $session 40 | * @param array $config 41 | * @param bool $exists 42 | * @return void 43 | */ 44 | public function save($session, $config, $exists) 45 | { 46 | $this->redis->put($session['id'], $session, $config['lifetime']); 47 | } 48 | 49 | /** 50 | * Delete a session from storage by a given ID. 51 | * 52 | * @param string $id 53 | * @return void 54 | */ 55 | public function delete($id) 56 | { 57 | $this->redis->forget($id); 58 | } 59 | 60 | } -------------------------------------------------------------------------------- /bundles/weather/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_weather($zip); 13 | print_r($weather); 14 | $view = View::make('weather::'.$size) 15 | ->with('weather', $weather); 16 | exit($view); 17 | } 18 | 19 | public function post_index() 20 | { 21 | $view_file = 'weather::'.Input::get('size', 'small'); 22 | 23 | $zip = Input::get('zip', '28056'); 24 | $config_key = Input::get('config'); 25 | 26 | if ( ! empty($config_key)) 27 | { 28 | $settings = Config::get('widgets.'.$config_key); 29 | if ( ! empty($settings)) 30 | { 31 | $zip = $settings['zip']; 32 | } 33 | else 34 | { 35 | echo "No available settings"; 36 | } 37 | } 38 | 39 | $weather = $this->_get_weather($zip); 40 | 41 | return View::make($view_file) 42 | ->with('weather', $weather) 43 | ->with('css', File::get(path('bundle').'weather/weather.css')); 44 | } 45 | 46 | private function _get_weather($zip) 47 | { 48 | $w = new googleWeather(); 49 | $w->enable_cache = 0; 50 | $data = $w->get_weather_data($zip); 51 | $data['location'] = 'Charlotte'; 52 | return $data; 53 | } 54 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/key.php: -------------------------------------------------------------------------------- 1 | path = path('app').'config/application'.EXT; 23 | } 24 | 25 | /** 26 | * Generate a random key for the application. 27 | * 28 | * @param array $arguments 29 | * @return void 30 | */ 31 | public function generate($arguments = array()) 32 | { 33 | // By default the Crypter class uses AES-256 encryption which uses 34 | // a 32 byte input vector, so that is the length of string we will 35 | // generate for the application token unless another length is 36 | // specified through the CLI. 37 | $key = Str::random(array_get($arguments, 0, 32)); 38 | 39 | $config = File::get($this->path); 40 | 41 | $config = str_replace("'key' => '',", "'key' => '{$key}',", $config, $count); 42 | 43 | File::put($this->path, $config); 44 | 45 | if ($count > 0) 46 | { 47 | echo "Configuration updated with secure key!"; 48 | } 49 | else 50 | { 51 | echo "An application key already exists!"; 52 | } 53 | 54 | echo PHP_EOL; 55 | } 56 | 57 | } -------------------------------------------------------------------------------- /laravel/session/drivers/cookie.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 |
13 | Visitor Traffic Chart 27 |
28 |
29 |

Total Visitors

30 |
31 |

32 |
Today
33 |
34 |
35 |

36 |
Yesterday
37 |
38 |
39 | 40 |
41 |
-------------------------------------------------------------------------------- /widgets/analytics/views/visitors_medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 |
13 | Visitor Traffic Chart 27 |
28 |
29 |

Total Visitors

30 |
31 |

32 |
Today
33 |
34 |
35 |

36 |
Yesterday
37 |
38 |
39 | 40 |
41 |
-------------------------------------------------------------------------------- /laravel/session/drivers/memcached.php: -------------------------------------------------------------------------------- 1 | memcached = $memcached; 21 | } 22 | 23 | /** 24 | * Load a session from storage by a given ID. 25 | * 26 | * If no session is found for the ID, null will be returned. 27 | * 28 | * @param string $id 29 | * @return array 30 | */ 31 | public function load($id) 32 | { 33 | return $this->memcached->get($id); 34 | } 35 | 36 | /** 37 | * Save a given session to storage. 38 | * 39 | * @param array $session 40 | * @param array $config 41 | * @param bool $exists 42 | * @return void 43 | */ 44 | public function save($session, $config, $exists) 45 | { 46 | $this->memcached->put($session['id'], $session, $config['lifetime']); 47 | } 48 | 49 | /** 50 | * Delete a session from storage by a given ID. 51 | * 52 | * @param string $id 53 | * @return void 54 | */ 55 | public function delete($id) 56 | { 57 | $this->memcached->forget($id); 58 | } 59 | 60 | } -------------------------------------------------------------------------------- /application/controllers/home.php: -------------------------------------------------------------------------------- 1 | data['page_title'] = $this->default_title; 17 | $view->data['theme'] = $this->default_theme; 18 | $view->data['widgets'] = array(); 19 | 20 | // Bind custom values to view 21 | if (is_array($board_data)) 22 | { 23 | 24 | if (isset($board_data['name']) && ! empty($board_data['name'])) 25 | { 26 | $view->data['page_title'] = $board_data['name']; 27 | } 28 | 29 | if (isset($board_data['theme']) && ! empty($board_data['theme'])) 30 | { 31 | $view->data['theme'] = $board_data['theme']; 32 | } 33 | 34 | // Bind widgets to view 35 | // TODO: Is there a better way to do this? 36 | $widgets = Config::get('widgets'); 37 | if (is_array($board_data['widgets'])) 38 | { 39 | foreach ($board_data['widgets'] as $widget) 40 | { 41 | if (isset($widgets[$widget]) && !empty($widgets[$widget])) 42 | { 43 | $view->data['widgets'][$widget] = $widgets[$widget]; 44 | } 45 | } 46 | } 47 | } 48 | 49 | return $view; 50 | } 51 | 52 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/route.php: -------------------------------------------------------------------------------- 1 | route(); 30 | 31 | echo PHP_EOL; 32 | } 33 | 34 | /** 35 | * Dump the results of the currently established route. 36 | * 37 | * @return void 38 | */ 39 | protected function route() 40 | { 41 | // We'll call the router using the method and URI specified by 42 | // the developer on the CLI. If a route is found, we will not 43 | // run the filters, but simply dump the result. 44 | $route = Router::route(Request::method(), URI::current()); 45 | 46 | if ( ! is_null($route)) 47 | { 48 | var_dump($route->response()); 49 | } 50 | else 51 | { 52 | echo '404: Not Found'; 53 | } 54 | } 55 | 56 | } -------------------------------------------------------------------------------- /public/less/code.less: -------------------------------------------------------------------------------- 1 | // Code.less 2 | // Code typography styles for the and
 elements
 3 | // --------------------------------------------------------
 4 | 
 5 | // Inline and block code styles
 6 | code,
 7 | pre {
 8 |   padding: 0 3px 2px;
 9 |   #font > #family > .monospace;
10 |   font-size: @baseFontSize - 1;
11 |   color: @grayDark;
12 |   .border-radius(3px);
13 | }
14 | 
15 | // Inline code
16 | code {
17 |   padding: 3px 4px;
18 |   color: #d14;
19 |   background-color: #f7f7f9;
20 |   border: 1px solid #e1e1e8;
21 | }
22 | 
23 | // Blocks of code
24 | pre {
25 |   display: block;
26 |   padding: (@baseLineHeight - 1) / 2;
27 |   margin: 0 0 @baseLineHeight / 2;
28 |   font-size: 12px;
29 |   line-height: @baseLineHeight;
30 |   background-color: #f5f5f5;
31 |   border: 1px solid #ccc; // fallback for IE7-8
32 |   border: 1px solid rgba(0,0,0,.15);
33 |   .border-radius(4px);
34 |   white-space: pre;
35 |   white-space: pre-wrap;
36 |   word-break: break-all;
37 |   word-wrap: break-word;
38 | 
39 |   // Make prettyprint styles more spaced out for readability
40 |   &.prettyprint {
41 |     margin-bottom: @baseLineHeight;
42 |   }
43 | 
44 |   // Account for some code outputs that place code tags in pre tags
45 |   code {
46 |     padding: 0;
47 |     color: inherit;
48 |     background-color: transparent;
49 |     border: 0;
50 |   }
51 | }
52 | 
53 | // Enable scrollable blocks of code
54 | .pre-scrollable {
55 |   max-height: 340px;
56 |   overflow-y: scroll;
57 | }


--------------------------------------------------------------------------------
/bundles/time/views/small.php:
--------------------------------------------------------------------------------
 1 | 
 4 | 
5 |

Time

6 |
7 |
8 |

9 |
10 | -------------------------------------------------------------------------------- /widgets/time/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Time

6 |
7 |
8 |

9 |
10 | -------------------------------------------------------------------------------- /laravel/hash.php: -------------------------------------------------------------------------------- 1 | 9 | * // Create a Bcrypt hash of a value 10 | * $hash = Hash::make('secret'); 11 | * 12 | * // Use a specified number of iterations when creating the hash 13 | * $hash = Hash::make('secret', 12); 14 | *
15 | * 16 | * @param string $value 17 | * @param int $rounds 18 | * @return string 19 | */ 20 | public static function make($value, $rounds = 8) 21 | { 22 | $work = str_pad($rounds, 2, '0', STR_PAD_LEFT); 23 | 24 | // Bcrypt expects the salt to be 22 base64 encoded characters including 25 | // dots and slashes. We will get rid of the plus signs included in the 26 | // base64 data and replace them with dots. OpenSSL will be used if it 27 | // is available on the server. 28 | if (function_exists('openssl_random_pseudo_bytes')) 29 | { 30 | $salt = openssl_random_pseudo_bytes(16); 31 | } 32 | else 33 | { 34 | $salt = Str::random(40); 35 | } 36 | 37 | $salt = substr(strtr(base64_encode($salt), '+', '.'), 0 , 22); 38 | 39 | return crypt($value, '$2a$'.$work.'$'.$salt); 40 | } 41 | 42 | /** 43 | * Determine if an unhashed value matches a Bcrypt hash. 44 | * 45 | * @param string $value 46 | * @param string $hash 47 | * @return bool 48 | */ 49 | public static function check($value, $hash) 50 | { 51 | return crypt($value, $hash) === $hash; 52 | } 53 | 54 | } -------------------------------------------------------------------------------- /laravel/database/query/join.php: -------------------------------------------------------------------------------- 1 | type = $type; 36 | $this->table = $table; 37 | } 38 | 39 | /** 40 | * Add an ON clause to the join. 41 | * 42 | * @param string $column1 43 | * @param string $operator 44 | * @param string $column2 45 | * @param string $connector 46 | * @return Join 47 | */ 48 | public function on($column1, $operator, $column2, $connector = 'AND') 49 | { 50 | $this->clauses[] = compact('column1', 'operator', 'column2', 'connector'); 51 | 52 | return $this; 53 | } 54 | 55 | /** 56 | * Add an OR ON clause to the join. 57 | * 58 | * @param string $column1 59 | * @param string $operator 60 | * @param string $column2 61 | * @return Join 62 | */ 63 | public function or_on($column1, $operator, $column2) 64 | { 65 | return $this->on($column1, $operator, $column2, 'OR'); 66 | } 67 | 68 | } -------------------------------------------------------------------------------- /application/start.php: -------------------------------------------------------------------------------- 1 | path('app').'controllers/base.php', 20 | )); 21 | 22 | /* 23 | |-------------------------------------------------------------------------- 24 | | Auto-Loader Directories 25 | |-------------------------------------------------------------------------- 26 | | 27 | | The Laravel auto-loader can search directories for files using the PSR-0 28 | | naming convention. This convention basically organizes classes by using 29 | | the class namespace to indicate the directory structure. 30 | | 31 | | So you don't have to manually map all of your models, we've added the 32 | | models and libraries directories for you. So, you can model away and 33 | | the auto-loader will take care of the rest. 34 | | 35 | */ 36 | 37 | Autoloader::directories(array( 38 | path('app').'models', 39 | path('app').'libraries', 40 | )); -------------------------------------------------------------------------------- /bundles/authenticjobs/README: -------------------------------------------------------------------------------- 1 | Name: Authentic Jobs widget 2 | 3 | Author: Jeff Madsen (www.codebyjeff.com) 4 | 5 | Date: 2012-01-07 6 | 7 | Version: 1.0 8 | 9 | This widget allow you to keep an eye on Cameron Moll's Authenticjobs.com job board, creating your own search agent. 10 | 11 | In the main application/views/home/index.php, add: 12 | 13 |
14 | 15 | You have all of the following search criteria: 16 | 17 | category: The id of a job category to limit to. See aj.categories.getList 18 | type: The id of a job type to limit to. See aj.types.getList 19 | sort: Accepted values are: date-posted-desc (the default) and date-posted-asc 20 | company: Free-text matching against company names. Suggested values are the ids from aj.jobs.getCompanies 21 | location: Free-text matching against company location names. Suggested values are the ids from aj.jobs.getLocation 22 | telecommuting: Set to 1 if you only want telecommuting jobs 23 | keywords: Keywords to look for in the title or description of the job posting. Separate multiple keywords with commas. 24 | page: The page of listings to return. Defaults to 1. 25 | perpage: The number of listings per page. The default value is 10. The maximum value is 100. 26 | 27 | Further info can be had at http://www.authenticjobs.com/api/documentation/. 28 | 29 | YOU WILL NEED TO OBTAIN AN AUTHENTICATION KEY AT: 30 | 31 | http://www.authenticjobs.com/api/ 32 | 33 | Happy Hunting! 34 | -------------------------------------------------------------------------------- /widgets/authenticjobs/README: -------------------------------------------------------------------------------- 1 | Name: Authentic Jobs widget 2 | 3 | Author: Jeff Madsen (www.codebyjeff.com) 4 | 5 | Date: 2012-01-07 6 | 7 | Version: 1.0 8 | 9 | This widget allow you to keep an eye on Cameron Moll's Authenticjobs.com job board, creating your own search agent. 10 | 11 | In the main application/views/home/index.php, add: 12 | 13 |
14 | 15 | You have all of the following search criteria: 16 | 17 | category: The id of a job category to limit to. See aj.categories.getList 18 | type: The id of a job type to limit to. See aj.types.getList 19 | sort: Accepted values are: date-posted-desc (the default) and date-posted-asc 20 | company: Free-text matching against company names. Suggested values are the ids from aj.jobs.getCompanies 21 | location: Free-text matching against company location names. Suggested values are the ids from aj.jobs.getLocation 22 | telecommuting: Set to 1 if you only want telecommuting jobs 23 | keywords: Keywords to look for in the title or description of the job posting. Separate multiple keywords with commas. 24 | page: The page of listings to return. Defaults to 1. 25 | perpage: The number of listings per page. The default value is 10. The maximum value is 100. 26 | 27 | Further info can be had at http://www.authenticjobs.com/api/documentation/. 28 | 29 | YOU WILL NEED TO OBTAIN AN AUTHENTICATION KEY AT: 30 | 31 | http://www.authenticjobs.com/api/ 32 | 33 | Happy Hunting! 34 | -------------------------------------------------------------------------------- /public/less/alerts.less: -------------------------------------------------------------------------------- 1 | // ALERT STYLES 2 | // ------------ 3 | 4 | // Base alert styles 5 | .alert { 6 | padding: 8px 35px 8px 14px; 7 | margin-bottom: @baseLineHeight; 8 | text-shadow: 0 1px 0 rgba(255,255,255,.5); 9 | background-color: @warningBackground; 10 | border: 1px solid @warningBorder; 11 | .border-radius(4px); 12 | } 13 | .alert, 14 | .alert-heading { 15 | color: @warningText; 16 | } 17 | 18 | // Adjust close link position 19 | .alert .close { 20 | position: relative; 21 | top: -2px; 22 | right: -21px; 23 | line-height: 18px; 24 | } 25 | 26 | // Alternate styles 27 | // ---------------- 28 | 29 | .alert-success { 30 | background-color: @successBackground; 31 | border-color: @successBorder; 32 | } 33 | .alert-success, 34 | .alert-success .alert-heading { 35 | color: @successText; 36 | } 37 | .alert-danger, 38 | .alert-error { 39 | background-color: @errorBackground; 40 | border-color: @errorBorder; 41 | } 42 | .alert-danger, 43 | .alert-error, 44 | .alert-danger .alert-heading, 45 | .alert-error .alert-heading { 46 | color: @errorText; 47 | } 48 | .alert-info { 49 | background-color: @infoBackground; 50 | border-color: @infoBorder; 51 | } 52 | .alert-info, 53 | .alert-info .alert-heading { 54 | color: @infoText; 55 | } 56 | 57 | 58 | // Block alerts 59 | // ------------------------ 60 | .alert-block { 61 | padding-top: 14px; 62 | padding-bottom: 14px; 63 | } 64 | .alert-block > p, 65 | .alert-block > ul { 66 | margin-bottom: 0; 67 | } 68 | .alert-block p + p { 69 | margin-top: 5px; 70 | } 71 | -------------------------------------------------------------------------------- /laravel/cli/artisan.php: -------------------------------------------------------------------------------- 1 | getMessage(); 45 | } 46 | 47 | echo PHP_EOL; -------------------------------------------------------------------------------- /widgets/pingdom/views/large.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /widgets/pingdom/views/medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /widgets/pingdom/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /widgets/pingdom/views/tiny.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /bundles/pingdom/views/large.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /bundles/pingdom/views/medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /bundles/pingdom/views/small.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /bundles/pingdom/views/tiny.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |

Pingdom Status

6 |
7 |
8 | 40 |
-------------------------------------------------------------------------------- /bundles/githubissues/controllers/home.php: -------------------------------------------------------------------------------- 1 | github = new Github_Client(); 10 | } 11 | 12 | public function get_index() 13 | { 14 | $issues = $this->github->getIssueApi()->getList('ellislab', 'codeigniter', 'open'); 15 | print_r($issues); 16 | $size = 'small'; 17 | $view = View::make('githubissues::small') 18 | ->with('project', 'php-github-api') 19 | ->with('issues', $issues) 20 | ->with('css', File::get(path('bundle').'github/github.css')); 21 | echo $view; 22 | } 23 | 24 | public function post_index() 25 | { 26 | $view_file = 'githubissues::'.Input::get('size', 'small'); 27 | $user = Input::get('user'); 28 | $project = Input::get('project'); 29 | $label = Input::get('label', 'closed'); 30 | $config_key = Input::get('config'); 31 | 32 | if (!empty($config_key)) 33 | { 34 | $settings = Config::get('widgets.'.$config_key); 35 | if (!empty($settings)) { 36 | $user = $settings['user']; 37 | $project = $settings['project']; 38 | $label = $settings['label']; 39 | } 40 | else { 41 | echo "No available settings"; 42 | } 43 | } 44 | 45 | $issues = $this->github->getIssueApi()->getList($user, $project, $label); 46 | 47 | $view = View::make($view_file) 48 | ->with('project', $project) 49 | ->with('issues', $issues) 50 | ->with('css', File::get(path('bundle').'githubissues/github.css')); 51 | exit($view); 52 | } 53 | } -------------------------------------------------------------------------------- /bundles/githubissues/php-github-api/lib/Github/HttpClientInterface.php: -------------------------------------------------------------------------------- 1 | 7 | * @license MIT License 8 | */ 9 | interface Github_HttpClientInterface 10 | { 11 | /** 12 | * Send a GET request 13 | * 14 | * @param string $path Request path 15 | * @param array $parameters GET Parameters 16 | * @param string $httpMethod HTTP method to use 17 | * @param array $options reconfigure the request for this call only 18 | * 19 | * @return array Data 20 | */ 21 | public function get($path, array $parameters = array(), array $options = array()); 22 | 23 | /** 24 | * Send a POST request 25 | * 26 | * @param string $path Request path 27 | * @param array $parameters POST Parameters 28 | * @param string $httpMethod HTTP method to use 29 | * @param array $options reconfigure the request for this call only 30 | * 31 | * @return array Data 32 | */ 33 | public function post($path, array $parameters = array(), array $options = array()); 34 | 35 | /** 36 | * Change an option value. 37 | * 38 | * @param string $name The option name 39 | * @param mixed $value The value 40 | * 41 | * @return Github_HttpClientInterface The current object instance 42 | */ 43 | public function setOption($name, $value); 44 | } 45 | -------------------------------------------------------------------------------- /widgets/githubissues/php-github-api/lib/Github/HttpClientInterface.php: -------------------------------------------------------------------------------- 1 | 7 | * @license MIT License 8 | */ 9 | interface Github_HttpClientInterface 10 | { 11 | /** 12 | * Send a GET request 13 | * 14 | * @param string $path Request path 15 | * @param array $parameters GET Parameters 16 | * @param string $httpMethod HTTP method to use 17 | * @param array $options reconfigure the request for this call only 18 | * 19 | * @return array Data 20 | */ 21 | public function get($path, array $parameters = array(), array $options = array()); 22 | 23 | /** 24 | * Send a POST request 25 | * 26 | * @param string $path Request path 27 | * @param array $parameters POST Parameters 28 | * @param string $httpMethod HTTP method to use 29 | * @param array $options reconfigure the request for this call only 30 | * 31 | * @return array Data 32 | */ 33 | public function post($path, array $parameters = array(), array $options = array()); 34 | 35 | /** 36 | * Change an option value. 37 | * 38 | * @param string $name The option name 39 | * @param mixed $value The value 40 | * 41 | * @return Github_HttpClientInterface The current object instance 42 | */ 43 | public function setOption($name, $value); 44 | } 45 | -------------------------------------------------------------------------------- /application/bundles.php: -------------------------------------------------------------------------------- 1 | array( 22 | | 'location' => 'admin', 23 | | 'handles' => 'admin', 24 | | ), 25 | | 26 | | Note that the "location" is relative to the "bundles" directory. 27 | | Now the bundle will be recognized by Laravel and will be able 28 | | to respond to requests beginning with "admin"! 29 | | 30 | | Have a bundle that lives in the root of the bundle directory 31 | | and doesn't respond to any requests? Just add the bundle 32 | | name to the array and we'll take care of the rest. 33 | | 34 | */ 35 | 36 | return array( 37 | 'autobundle' => array('location'=>'userscape/autobundle', 'auto' => true), 38 | /*'weather' => array( 39 | 'location' => 'weather', 40 | 'handles' => 'weather', 41 | ),*/ 42 | ); -------------------------------------------------------------------------------- /laravel/cache/drivers/apc.php: -------------------------------------------------------------------------------- 1 | key = $key; 21 | } 22 | 23 | /** 24 | * Determine if an item exists in the cache. 25 | * 26 | * @param string $key 27 | * @return bool 28 | */ 29 | public function has($key) 30 | { 31 | return ( ! is_null($this->get($key))); 32 | } 33 | 34 | /** 35 | * Retrieve an item from the cache driver. 36 | * 37 | * @param string $key 38 | * @return mixed 39 | */ 40 | protected function retrieve($key) 41 | { 42 | if (($cache = apc_fetch($this->key.$key)) !== false) 43 | { 44 | return $cache; 45 | } 46 | } 47 | 48 | /** 49 | * Write an item to the cache for a given number of minutes. 50 | * 51 | * 52 | * // Put an item in the cache for 15 minutes 53 | * Cache::put('name', 'Taylor', 15); 54 | * 55 | * 56 | * @param string $key 57 | * @param mixed $value 58 | * @param int $minutes 59 | * @return void 60 | */ 61 | public function put($key, $value, $minutes) 62 | { 63 | apc_store($this->key.$key, $value, $minutes * 60); 64 | } 65 | 66 | /** 67 | * Delete an item from the cache. 68 | * 69 | * @param string $key 70 | * @return void 71 | */ 72 | public function forget($key) 73 | { 74 | apc_delete($this->key.$key); 75 | } 76 | 77 | } -------------------------------------------------------------------------------- /laravel/cli/tasks/test/phpunit.php: -------------------------------------------------------------------------------- 1 | 8 | * @link http://laravel.com 9 | */ 10 | 11 | // -------------------------------------------------------------- 12 | // Define the directory separator for the environment. 13 | // -------------------------------------------------------------- 14 | define('DS', DIRECTORY_SEPARATOR); 15 | 16 | // -------------------------------------------------------------- 17 | // Set the core Laravel path constants. 18 | // -------------------------------------------------------------- 19 | require 'paths.php'; 20 | 21 | // -------------------------------------------------------------- 22 | // Override the application paths when testing the core. 23 | // -------------------------------------------------------------- 24 | $config = file_get_contents('phpunit.xml'); 25 | 26 | if (strpos($config, 'laravel-tests') !== false) 27 | { 28 | $path = path('bundle').'laravel-tests'.DS; 29 | 30 | set_path('app', $path.'application'.DS); 31 | 32 | set_path('bundle', $path.'bundles'.DS); 33 | 34 | set_path('storage', $path.'storage'.DS); 35 | } 36 | 37 | // -------------------------------------------------------------- 38 | // Bootstrap the Laravel core. 39 | // -------------------------------------------------------------- 40 | require path('sys').'core.php'; 41 | 42 | // -------------------------------------------------------------- 43 | // Start the default bundle. 44 | // -------------------------------------------------------------- 45 | Bundle::start(DEFAULT_BUNDLE); -------------------------------------------------------------------------------- /bundles/stocks/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_data($exchange, $symbol); 25 | 26 | $view_file = 'stocks::'.$size; 27 | 28 | return View::make($view_file) 29 | ->with('exchange', $exchange) 30 | ->with('symbol', $symbol) 31 | ->with('price', $stock_data[0]['l']) 32 | ->with('change', $stock_data[0]['c']) 33 | ->with('change_class', $stock_data[0]['c'] > 0 ? 'up' : 'down') 34 | ->with('time', $stock_data[0]['lt']) 35 | ->with('css', File::get(path('bundle').'stocks/stocks.css')); 36 | } 37 | 38 | private function _get_data($exchange, $symbol) 39 | { 40 | $url = "http://finance.google.com/finance/info?client=ig&q={$exchange}:{$symbol}"; 41 | 42 | $quote = @file_get_contents($url); 43 | 44 | // Remove CR's from ouput - make it one line 45 | $json = str_replace('\n', '', $quote); 46 | 47 | // Remove //, [, and ] to build qualified string 48 | $data = substr($json, 4, strlen($json) - 5); 49 | 50 | // Decode JSON data 51 | $json_output = json_decode($data, true); 52 | 53 | return $json_output; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /bundles/githubcommits/controllers/home.php: -------------------------------------------------------------------------------- 1 | github = new Github_Client(); 10 | } 11 | 12 | public function get_index() 13 | { 14 | $commits = $this->github->getCommitApi()->getBranchCommits('laravel', 'laravel', 'master'); 15 | print_r($commits); 16 | $size = 'small'; 17 | $view = View::make('githubcommits::small') 18 | ->with('project', 'laravel') 19 | ->with('commits', $commits) 20 | ->with('css', File::get(path('bundle').'github/github.css')); 21 | echo $view; 22 | } 23 | 24 | public function post_index() 25 | { 26 | $view_file = 'githubcommits::'.Input::get('size', 'small'); 27 | $user = Input::get('user', 'laravel'); 28 | $project = Input::get('project', 'laravel'); 29 | $branch = Input::get('branch', 'master'); 30 | $config_key = Input::get('config'); 31 | 32 | if (!empty($config_key)) 33 | { 34 | $settings = Config::get('widgets.'.$config_key); 35 | if (!empty($settings)) { 36 | $user = $settings['user']; 37 | $project = $settings['project']; 38 | $branch = $settings['branch']; 39 | } 40 | else { 41 | echo "No available settings"; 42 | } 43 | } 44 | 45 | $commits = $this->github->getCommitApi()->getBranchCommits($user, $project, $branch); 46 | 47 | $view = View::make($view_file) 48 | ->with('project', $project) 49 | ->with('commits', $commits) 50 | ->with('branch', $branch) 51 | ->with('css', File::get(path('bundle').'githubissues/github.css')); 52 | exit($view); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /widgets/githubissues/controllers/home.php: -------------------------------------------------------------------------------- 1 | github = new Github_Client(); 12 | } 13 | 14 | public function get_index() 15 | { 16 | $issues = $this->github->getIssueApi()->getList('ellislab', 'codeigniter', 'open'); 17 | print_r($issues); 18 | $size = 'small'; 19 | $view = View::make('githubissues::small') 20 | ->with('project', 'php-github-api') 21 | ->with('issues', $issues) 22 | ->with('css', File::get(BUNDLE_PATH.'github/github.css')); 23 | echo $view; 24 | } 25 | 26 | public function post_index() 27 | { 28 | $view_file = 'githubissues::'.Input::get('size', 'small'); 29 | $user = Input::get('user'); 30 | $project = Input::get('project'); 31 | $label = Input::get('label', 'closed'); 32 | $config_key = Input::get('config'); 33 | 34 | if (!empty($config_key)) 35 | { 36 | $settings = Config::get('widgets.'.$config_key); 37 | if (!empty($settings)) { 38 | $user = $settings['user']; 39 | $project = $settings['project']; 40 | $label = $settings['label']; 41 | } 42 | else { 43 | echo "No available settings"; 44 | } 45 | } 46 | 47 | $issues = $this->github->getIssueApi()->getList($user, $project, $label); 48 | 49 | $view = View::make($view_file) 50 | ->with('project', $project) 51 | ->with('issues', $issues) 52 | ->with('css', File::get(BUNDLE_PATH.'githubissues/github.css')); 53 | exit($view); 54 | } 55 | } -------------------------------------------------------------------------------- /bundles/analytics/config/reports.php: -------------------------------------------------------------------------------- 1 | array( 15 | 'name' => 'Top Content (last hour)', 16 | 'start' => '1 hour', 17 | 'properties' => array( 18 | 'dimensions' => 'ga:pagePath', 19 | 'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:pageviewsPerVisit', 20 | 'sort' => '-ga:pageviews', 21 | ), 22 | ), 23 | 'top_sections' => array( 24 | 'name' => 'Top Sections (today)', 25 | 'start' => '1 day', 26 | 'properties' => array( 27 | 'dimensions' => 'ga:pagePath', 28 | 'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:pageviewsPerVisit', 29 | 'sort' => '-ga:pageviews', 30 | ), 31 | ), 32 | 33 | 'search' => array( 34 | 'name' => 'Search Keywords (today)', 35 | 'start' => '0 day', 36 | 'properties' => array( 37 | 'dimensions' => 'ga:keyword', 38 | 'metrics' => 'ga:visits,ga:pageviews,ga:pageviewsPerVisit,ga:avgTimeOnSite', 39 | 'sort' => '-ga:visits', 40 | ), 41 | ), 42 | 43 | 'visitors' => array( 44 | 'name' => 'Visitors (last 7 days)', 45 | 'start' => '1 week', 46 | 'properties' => array( 47 | 'dimensions' => 'ga:date', 48 | 'metrics' => 'ga:pageviews,ga:visits,ga:bounces', 49 | 'sort' => 'ga:date' 50 | ), 51 | ), 52 | ); 53 | -------------------------------------------------------------------------------- /widgets/analytics/config/reports.php: -------------------------------------------------------------------------------- 1 | array( 15 | 'name' => 'Top Content (last hour)', 16 | 'start' => '1 hour', 17 | 'properties' => array( 18 | 'dimensions' => 'ga:pagePath', 19 | 'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:pageviewsPerVisit', 20 | 'sort' => '-ga:pageviews', 21 | ), 22 | ), 23 | 'top_sections' => array( 24 | 'name' => 'Top Sections (today)', 25 | 'start' => '1 day', 26 | 'properties' => array( 27 | 'dimensions' => 'ga:pagePath', 28 | 'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:pageviewsPerVisit', 29 | 'sort' => '-ga:pageviews', 30 | ), 31 | ), 32 | 33 | 'search' => array( 34 | 'name' => 'Search Keywords (today)', 35 | 'start' => '0 day', 36 | 'properties' => array( 37 | 'dimensions' => 'ga:keyword', 38 | 'metrics' => 'ga:visits,ga:pageviews,ga:pageviewsPerVisit,ga:avgTimeOnSite', 39 | 'sort' => '-ga:visits', 40 | ), 41 | ), 42 | 43 | 'visitors' => array( 44 | 'name' => 'Visitors (last 7 days)', 45 | 'start' => '1 week', 46 | 'properties' => array( 47 | 'dimensions' => 'ga:date', 48 | 'metrics' => 'ga:pageviews,ga:visits,ga:bounces', 49 | 'sort' => 'ga:date' 50 | ), 51 | ), 52 | ); 53 | -------------------------------------------------------------------------------- /bundles/pingdom/controllers/home.php: -------------------------------------------------------------------------------- 1 | with('checks', $pingdom_results->results()) 19 | ->with('css', File::get(path('bundle').'pingdom/pingdom.css')); 20 | } 21 | 22 | public function post_index() 23 | { 24 | $email = Input::get('email'); 25 | $password = Input::get('password'); 26 | $api_key = Input::get('key'); 27 | $check_id = Input::get('checkid'); 28 | $config_key = Input::get('config'); 29 | 30 | if ( ! empty($config_key)) 31 | { 32 | $settings = Config::get('widgets.'.$config_key); 33 | if ( ! empty($settings)) 34 | { 35 | $email = $settings['email']; 36 | $password = $settings['password']; 37 | $api_key = $settings['key']; 38 | if ( ! empty($settings['check_id'])) 39 | { 40 | $check_id = $settings['check_id']; 41 | } 42 | } 43 | else 44 | { 45 | echo "No available settings"; 46 | } 47 | } 48 | 49 | $view_file = 'pingdom::'.Input::get('size', 'large'); 50 | 51 | $pingdom_results = new Pingdom($email, $password, $api_key, $check_id); 52 | 53 | return View::make($view_file) 54 | ->with('checks', $pingdom_results->results()) 55 | ->with('css', File::get(path('bundle').'pingdom/pingdom.css')); 56 | } 57 | } -------------------------------------------------------------------------------- /widgets/stocks/controllers/home.php: -------------------------------------------------------------------------------- 1 | _get_data($exchange, $symbol); 25 | 26 | $view_file = 'stocks::'.$size; 27 | 28 | $view = View::make($view_file) 29 | ->with('exchange', $exchange) 30 | ->with('symbol', $symbol) 31 | ->with('price', $stock_data[0]['l']) 32 | ->with('change', $stock_data[0]['c']) 33 | ->with('change_class', $stock_data[0]['c'] > 0 ? 'up' : 'down') 34 | ->with('time', $stock_data[0]['lt']) 35 | ->with('css', File::get(BUNDLE_PATH.'stocks/stocks.css')); 36 | exit($view); 37 | } 38 | 39 | private function _get_data($exchange, $symbol) 40 | { 41 | $url = "http://finance.google.com/finance/info?client=ig&q={$exchange}:{$symbol}"; 42 | 43 | $quote = @file_get_contents($url); 44 | 45 | // Remove CR's from ouput - make it one line 46 | $json = str_replace('\n', '', $quote); 47 | 48 | // Remove //, [, and ] to build qualified string 49 | $data = substr($json, 4, strlen($json) - 5); 50 | 51 | // Decode JSON data 52 | $json_output = json_decode($data, true); 53 | 54 | return $json_output; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /laravel/log.php: -------------------------------------------------------------------------------- 1 | getMessage().' in '.$e->getFile().' on line '.$e->getLine(); 25 | } 26 | 27 | /** 28 | * Write a message to the log file. 29 | * 30 | * 31 | * // Write an "error" messge to the log file 32 | * Log::write('error', 'Something went horribly wrong!'); 33 | * 34 | * // Write an "error" message using the class' magic method 35 | * Log::error('Something went horribly wrong!'); 36 | * 37 | * 38 | * @param string $type 39 | * @param string $message 40 | * @return void 41 | */ 42 | public static function write($type, $message) 43 | { 44 | $message = date('Y-m-d H:i:s').' '.Str::upper($type)." - {$message}".PHP_EOL; 45 | 46 | File::append(path('storage').'logs/'.date('Y-m-d').'.log', $message); 47 | } 48 | 49 | /** 50 | * Dynamically write a log message. 51 | * 52 | * 53 | * // Write an "error" message to the log file 54 | * Log::error('This is an error!'); 55 | * 56 | * // Write a "warning" message to the log file 57 | * Log::warning('This is a warning!'); 58 | * 59 | */ 60 | public static function __callStatic($method, $parameters) 61 | { 62 | static::write($method, $parameters[0]); 63 | } 64 | 65 | } -------------------------------------------------------------------------------- /widgets/twitter/controllers/home.php: -------------------------------------------------------------------------------- 1 | with('search', $search) 17 | ->with('messages', $twitter_search->results()) 18 | ->with('css', File::get(BUNDLE_PATH.'twitter/twitter.css')); 19 | exit($view); 20 | } 21 | 22 | public function post_index() 23 | { 24 | $view_file = 'twitter::'.Input::get('size', 'small'); 25 | $search = Input::get('search', 'laravel'); 26 | $config_key = Input::get('config'); 27 | 28 | if (!empty($config_key)) 29 | { 30 | $settings = Config::get('widgets.'.$config_key); 31 | if (!empty($settings)) { 32 | 33 | if(isset($settings['woeid'])) { 34 | $view_file = 'twitter::trends_'.Input::get('size', 'small'); 35 | } 36 | 37 | $twitter_search = new Twittersearch($settings['search']); 38 | 39 | $view = View::make($view_file); 40 | if (isset($settings['search'])) { 41 | $view->with('search', $settings['search']) 42 | ->with('messages', $twitter_search->results()); 43 | } 44 | elseif (isset($settings['woeid'])) { 45 | $view->with('messages', $twitter_search->trends($settings['woeid'])); 46 | } 47 | 48 | $view->with('css', File::get(BUNDLE_PATH.'twitter/twitter.css')); 49 | exit($view); 50 | } 51 | else { 52 | echo "No available settings"; 53 | } 54 | } 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /bundles/userscape/autobundle/start.php: -------------------------------------------------------------------------------- 1 | $name, 31 | 'location' => str_replace(path('bundle'), '', $path), 32 | 'auto' => true) 33 | ); 34 | Route::controller(array($name.'::home', 'home::index')); 35 | 36 | // autobundle is already in the loop that's starting bundles so we 37 | // can't let the normal mechanism start it. We'll start it here. 38 | Bundle::start($name); 39 | } 40 | } 41 | }, iterator_to_array(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(path('bundle'))))); -------------------------------------------------------------------------------- /laravel/cache/drivers/redis.php: -------------------------------------------------------------------------------- 1 | redis = $redis; 21 | } 22 | 23 | /** 24 | * Determine if an item exists in the cache. 25 | * 26 | * @param string $key 27 | * @return bool 28 | */ 29 | public function has($key) 30 | { 31 | return ( ! is_null($this->redis->get($key))); 32 | } 33 | 34 | /** 35 | * Retrieve an item from the cache driver. 36 | * 37 | * @param string $key 38 | * @return mixed 39 | */ 40 | protected function retrieve($key) 41 | { 42 | if ( ! is_null($cache = $this->redis->get($key))) 43 | { 44 | return unserialize($cache); 45 | } 46 | } 47 | 48 | /** 49 | * Write an item to the cache for a given number of minutes. 50 | * 51 | * 52 | * // Put an item in the cache for 15 minutes 53 | * Cache::put('name', 'Taylor', 15); 54 | * 55 | * 56 | * @param string $key 57 | * @param mixed $value 58 | * @param int $minutes 59 | * @return void 60 | */ 61 | public function put($key, $value, $minutes) 62 | { 63 | $this->redis->set($key, serialize($value)); 64 | 65 | $this->redis->expire($key, $minutes * 60); 66 | } 67 | 68 | /** 69 | * Delete an item from the cache. 70 | * 71 | * @param string $key 72 | * @return void 73 | */ 74 | public function forget($key) 75 | { 76 | $this->redis->del($key); 77 | } 78 | 79 | } -------------------------------------------------------------------------------- /bundles/githubissues/php-github-api/lib/Github/Api.php: -------------------------------------------------------------------------------- 1 | 7 | * @license MIT License 8 | */ 9 | abstract class Github_Api implements Github_ApiInterface 10 | { 11 | /** 12 | * The client 13 | * @var Github_Client 14 | */ 15 | private $client; 16 | 17 | public function __construct(Github_Client $client) 18 | { 19 | $this->client = $client; 20 | } 21 | 22 | /** 23 | * Call any path, GET method 24 | * Ex: $api->get('repos/show/my-username/my-repo') 25 | * 26 | * @param string $path the GitHub path 27 | * @param array $parameters GET parameters 28 | * @param array $requestOptions reconfigure the request 29 | * @return array data returned 30 | */ 31 | protected function get($path, array $parameters = array(), $requestOptions = array()) 32 | { 33 | return $this->client->get($path, $parameters, $requestOptions); 34 | } 35 | 36 | /** 37 | * Call any path, POST method 38 | * Ex: $api->post('repos/show/my-username', array('email' => 'my-new-email@provider.org')) 39 | * 40 | * @param string $path the GitHub path 41 | * @param array $parameters POST parameters 42 | * @param array $requestOptions reconfigure the request 43 | * @return array data returned 44 | */ 45 | protected function post($path, array $parameters = array(), $requestOptions = array()) 46 | { 47 | return $this->client->post($path, $parameters, $requestOptions); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /widgets/githubissues/php-github-api/lib/Github/Api.php: -------------------------------------------------------------------------------- 1 | 7 | * @license MIT License 8 | */ 9 | abstract class Github_Api implements Github_ApiInterface 10 | { 11 | /** 12 | * The client 13 | * @var Github_Client 14 | */ 15 | private $client; 16 | 17 | public function __construct(Github_Client $client) 18 | { 19 | $this->client = $client; 20 | } 21 | 22 | /** 23 | * Call any path, GET method 24 | * Ex: $api->get('repos/show/my-username/my-repo') 25 | * 26 | * @param string $path the GitHub path 27 | * @param array $parameters GET parameters 28 | * @param array $requestOptions reconfigure the request 29 | * @return array data returned 30 | */ 31 | protected function get($path, array $parameters = array(), $requestOptions = array()) 32 | { 33 | return $this->client->get($path, $parameters, $requestOptions); 34 | } 35 | 36 | /** 37 | * Call any path, POST method 38 | * Ex: $api->post('repos/show/my-username', array('email' => 'my-new-email@provider.org')) 39 | * 40 | * @param string $path the GitHub path 41 | * @param array $parameters POST parameters 42 | * @param array $requestOptions reconfigure the request 43 | * @return array data returned 44 | */ 45 | protected function post($path, array $parameters = array(), $requestOptions = array()) 46 | { 47 | return $this->client->post($path, $parameters, $requestOptions); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /bundles/twitter/controllers/home.php: -------------------------------------------------------------------------------- 1 | with('search', $search) 17 | ->with('messages', $twitter_search->results()) 18 | ->with('css', File::get(BUNDLE_PATH.'twitter/twitter.css')); 19 | exit($view); 20 | } 21 | 22 | public function post_index() 23 | { 24 | $view_file = 'twitter::'.Input::get('size', 'small'); 25 | $search = Input::get('search', 'laravel'); 26 | $config_key = Input::get('config'); 27 | 28 | if ( ! empty($config_key)) 29 | { 30 | $settings = Config::get('widgets.'.$config_key); 31 | if ( ! empty($settings)) 32 | { 33 | if (isset($settings['woeid'])) 34 | { 35 | $view_file = 'twitter::trends_'.Input::get('size', 'small'); 36 | } 37 | 38 | $twitter_search = new Twittersearch($settings['search']); 39 | 40 | $view = View::make($view_file); 41 | if (isset($settings['search'])) 42 | { 43 | $view->with('search', $settings['search']) 44 | ->with('messages', $twitter_search->results()); 45 | } 46 | elseif (isset($settings['woeid'])) 47 | { 48 | $view->with('messages', $twitter_search->trends($settings['woeid'])); 49 | } 50 | 51 | $view->with('css', File::get(path('bundle').'twitter/twitter.css')); 52 | return $view; 53 | } 54 | 55 | echo "No available settings"; 56 | return null; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /public/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v2.0.1 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | // CSS Reset 12 | @import "reset.less"; 13 | 14 | // Core variables and mixins 15 | @import "variables.less"; // Modify this for custom colors, font-sizes, etc 16 | @import "mixins.less"; 17 | 18 | // Grid system and page structure 19 | @import "scaffolding.less"; 20 | @import "grid.less"; 21 | @import "layouts.less"; 22 | 23 | // Base CSS 24 | @import "type.less"; 25 | @import "code.less"; 26 | @import "forms.less"; 27 | @import "tables.less"; 28 | 29 | // Components: common 30 | @import "sprites.less"; 31 | @import "dropdowns.less"; 32 | @import "wells.less"; 33 | @import "component-animations.less"; 34 | @import "close.less"; 35 | 36 | // Components: Buttons & Alerts 37 | @import "buttons.less"; 38 | @import "button-groups.less"; 39 | @import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less 40 | 41 | // Components: Nav 42 | @import "navs.less"; 43 | @import "navbar.less"; 44 | @import "breadcrumbs.less"; 45 | @import "pagination.less"; 46 | @import "pager.less"; 47 | 48 | // Components: Popovers 49 | @import "modals.less"; 50 | @import "tooltip.less"; 51 | @import "popovers.less"; 52 | 53 | // Components: Misc 54 | @import "thumbnails.less"; 55 | @import "labels.less"; 56 | @import "progress-bars.less"; 57 | @import "accordion.less"; 58 | @import "carousel.less"; 59 | @import "hero-unit.less"; 60 | 61 | // Utility classes 62 | @import "utilities.less"; // Has to be last to override when necessary 63 | -------------------------------------------------------------------------------- /widgets/githubcommits/controllers/home.php: -------------------------------------------------------------------------------- 1 | github = new Github_Client(); 12 | } 13 | 14 | public function get_index() 15 | { 16 | $commits = $this->github->getCommitApi()->getBranchCommits('laravel', 'laravel', 'master'); 17 | print_r($commits); 18 | $size = 'small'; 19 | $view = View::make('githubcommits::small') 20 | ->with('project', 'laravel') 21 | ->with('commits', $commits) 22 | ->with('css', File::get(BUNDLE_PATH.'github/github.css')); 23 | echo $view; 24 | } 25 | 26 | public function post_index() 27 | { 28 | $view_file = 'githubcommits::'.Input::get('size', 'small'); 29 | $user = Input::get('user', 'laravel'); 30 | $project = Input::get('project', 'laravel'); 31 | $branch = Input::get('branch', 'master'); 32 | $config_key = Input::get('config'); 33 | 34 | if (!empty($config_key)) 35 | { 36 | $settings = Config::get('widgets.'.$config_key); 37 | if (!empty($settings)) { 38 | $user = $settings['user']; 39 | $project = $settings['project']; 40 | $branch = $settings['branch']; 41 | } 42 | else { 43 | echo "No available settings"; 44 | } 45 | } 46 | 47 | $commits = $this->github->getCommitApi()->getBranchCommits($user, $project, $branch); 48 | 49 | $view = View::make($view_file) 50 | ->with('project', $project) 51 | ->with('commits', $commits) 52 | ->with('branch', $branch) 53 | ->with('css', File::get(BUNDLE_PATH.'githubissues/github.css')); 54 | exit($view); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /widgets/pingdom/controllers/home.php: -------------------------------------------------------------------------------- 1 | with('checks', $pingdom_results->results()) 21 | ->with('css', File::get(BUNDLE_PATH.'pingdom/pingdom.css')); 22 | exit($view); 23 | } 24 | 25 | public function post_index() 26 | { 27 | $email = Input::get('email'); 28 | $password = Input::get('password'); 29 | $api_key = Input::get('key'); 30 | $check_id = Input::get('checkid'); 31 | $config_key = Input::get('config'); 32 | 33 | if (!empty($config_key)) 34 | { 35 | $settings = Config::get('widgets.'.$config_key); 36 | if (!empty($settings)) { 37 | $email = $settings['email']; 38 | $password = $settings['password']; 39 | $api_key = $settings['key']; 40 | if (!empty($settings['check_id'])) 41 | { 42 | $check_id = $settings['check_id']; 43 | } 44 | } 45 | else { 46 | echo "No available settings"; 47 | } 48 | } 49 | 50 | $view_file = 'pingdom::'.Input::get('size', 'large'); 51 | 52 | $pingdom_results = new Pingdom($email, $password, $api_key, $check_id); 53 | 54 | $view = View::make($view_file) 55 | ->with('checks', $pingdom_results->results()) 56 | ->with('css', File::get(BUNDLE_PATH.'pingdom/pingdom.css')); 57 | exit($view); 58 | } 59 | } -------------------------------------------------------------------------------- /public/themes/wood/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #292929 url(bg.jpg); 3 | } 4 | 5 | section { 6 | color: #fff; 7 | background: #494949 url(ajax-loader-large.gif); 8 | background: -moz-linear-gradient(top, #494949 0%, #222222 70%); /* FF3.6+ */ 9 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#494949), color-stop(70%,#222222)); /* Chrome,Safari4+ */ 10 | background: -webkit-linear-gradient(top, #494949 0%,#222222 70%); /* Chrome10+,Safari5.1+ */ 11 | background: -o-linear-gradient(top, #494949 0%,#222222 70%); /* Opera11.10+ */ 12 | background: -ms-linear-gradient(top, #494949 0%,#222222 70%); /* IE10+ */ 13 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#222222',GradientType=0 ); /* IE6-9 */ 14 | background: linear-gradient(top, #494949 0%,#222222 70%); /* W3C */ 15 | border: 1px solid #111; 16 | } 17 | 18 | header { 19 | background: #ffa84c; /* Old browsers */ 20 | background: -moz-linear-gradient(top, #ffa84c 0%, #ff7b0d 100%); /* FF3.6+ */ 21 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffa84c), color-stop(100%,#ff7b0d)); /* Chrome,Safari4+ */ 22 | background: -webkit-linear-gradient(top, #ffa84c 0%,#ff7b0d 100%); /* Chrome10+,Safari5.1+ */ 23 | background: -o-linear-gradient(top, #ffa84c 0%,#ff7b0d 100%); /* Opera 11.10+ */ 24 | background: -ms-linear-gradient(top, #ffa84c 0%,#ff7b0d 100%); /* IE10+ */ 25 | background: linear-gradient(top, #ffa84c 0%,#ff7b0d 100%); /* W3C */ 26 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffa84c', endColorstr='#ff7b0d',GradientType=0 ); /* IE6-9 */ 27 | border-bottom: 1px solid #111; 28 | } 29 | 30 | .content { 31 | border-top: 1px solid #666667; 32 | color: white; 33 | } 34 | 35 | .error {color: #a62f19} -------------------------------------------------------------------------------- /public/css/style.css: -------------------------------------------------------------------------------- 1 | 2 | #wrapper { 3 | clear: both; 4 | } 5 | section { 6 | display: block; 7 | float: left; 8 | position: relative; 9 | border-radius: 5px; 10 | -moz-border-radius: 5px; 11 | margin: 5px; 12 | font: normal 12px/130% Verdana, Arial, Helvetica, sans-serif; 13 | margin-bottom: 10px; 14 | overflow:hidden; 15 | height: 200px; 16 | } 17 | 18 | header { 19 | display: block; 20 | border-top-left-radius: 5px 5px; 21 | border-top-right-radius: 5px 5px; 22 | -webkit-border-top-left-radius: 5px 5px; 23 | -webkit-border-top-right-radius: 5px 5px; 24 | padding:8px 0px 8px 8px; 25 | } 26 | 27 | header:hover{cursor: move} 28 | 29 | .content { 30 | padding: 20px 2px 0; 31 | padding: 5px 0; 32 | } 33 | 34 | .tiny { 35 | width: 14.5%; 36 | min-width: 200px; 37 | } 38 | .small { 39 | width: 30%; 40 | min-width: 200px; 41 | } 42 | .medium { 43 | width: 60.8%; 44 | height: 300px; 45 | } 46 | .large { 47 | width: 91.5%; 48 | } 49 | .extralarge { 50 | height: 300px; 51 | width: 91.5%; 52 | } 53 | 54 | h1 { 55 | font: bold 14px/130% Verdana, Arial, Helvetica, sans-serif; 56 | background: none; 57 | text-indent: 0; 58 | font-size: 14px; 59 | font-weight: bold; 60 | color: white; 61 | text-shadow: 0 1px 0 #222; 62 | margin: 0; 63 | text-transform: uppercase; 64 | padding: 0; 65 | } 66 | h1 span { 67 | font-size: 11px; 68 | font-weight: normal; 69 | text-transform: none; 70 | padding-left: 10px; 71 | } 72 | a { 73 | color: #fff; 74 | text-decoration: none; 75 | } 76 | a:hover { 77 | color: #fff; 78 | text-decoration: underline; 79 | } 80 | .loading { 81 | margin: 20px auto; 82 | text-align: center; 83 | } 84 | .clearfix:before, .clearfix:after { content: ""; display: table; } 85 | .clearfix:after { clear: both; } 86 | .clearfix { zoom: 1; } 87 | 88 | .ui-state-highlight { width: 300px; height: 200px; line-height: 1.2em; } 89 | -------------------------------------------------------------------------------- /laravel/cache/drivers/memcached.php: -------------------------------------------------------------------------------- 1 | key = $key; 28 | $this->memcache = $memcache; 29 | } 30 | 31 | /** 32 | * Determine if an item exists in the cache. 33 | * 34 | * @param string $key 35 | * @return bool 36 | */ 37 | public function has($key) 38 | { 39 | return ( ! is_null($this->get($key))); 40 | } 41 | 42 | /** 43 | * Retrieve an item from the cache driver. 44 | * 45 | * @param string $key 46 | * @return mixed 47 | */ 48 | protected function retrieve($key) 49 | { 50 | if (($cache = $this->memcache->get($this->key.$key)) !== false) 51 | { 52 | return $cache; 53 | } 54 | } 55 | 56 | /** 57 | * Write an item to the cache for a given number of minutes. 58 | * 59 | * 60 | * // Put an item in the cache for 15 minutes 61 | * Cache::put('name', 'Taylor', 15); 62 | * 63 | * 64 | * @param string $key 65 | * @param mixed $value 66 | * @param int $minutes 67 | * @return void 68 | */ 69 | public function put($key, $value, $minutes) 70 | { 71 | $this->memcache->set($this->key.$key, $value, 0, $minutes * 60); 72 | } 73 | 74 | /** 75 | * Delete an item from the cache. 76 | * 77 | * @param string $key 78 | * @return void 79 | */ 80 | public function forget($key) 81 | { 82 | $this->memcache->delete($this->key.$key); 83 | } 84 | 85 | } -------------------------------------------------------------------------------- /laravel/fluent.php: -------------------------------------------------------------------------------- 1 | 16 | * Create a new fluent container with attributes 17 | * $fluent = new Fluent(array('name' => 'Taylor')); 18 | * 19 | * 20 | * @param array $attributes 21 | * @return void 22 | */ 23 | public function __construct($attributes = array()) 24 | { 25 | foreach ($attributes as $key => $value) 26 | { 27 | $this->$key = $value; 28 | } 29 | } 30 | 31 | /** 32 | * Get an attribute from the fluent container. 33 | * 34 | * @param string $attribute 35 | * @param mixed $default 36 | * @return mixed 37 | */ 38 | public function get($attribute, $default = null) 39 | { 40 | return array_get($this->attributes, $attribute, $default); 41 | } 42 | 43 | /** 44 | * Handle dynamic calls to the container to set attributes. 45 | * 46 | * 47 | * // Fluently set the value of a few attributes 48 | * $fluent->name('Taylor')->age(25); 49 | * 50 | * // Set the value of an attribute to true (boolean) 51 | * $fluent->nullable()->name('Taylor'); 52 | * 53 | */ 54 | public function __call($method, $parameters) 55 | { 56 | $this->$method = (count($parameters) > 0) ? $parameters[0] : true; 57 | 58 | return $this; 59 | } 60 | 61 | /** 62 | * Dynamically retrieve the value of an attribute. 63 | */ 64 | public function __get($key) 65 | { 66 | if (array_key_exists($key, $this->attributes)) 67 | { 68 | return $this->attributes[$key]; 69 | } 70 | } 71 | 72 | /** 73 | * Dynamically set the value of an attribute. 74 | */ 75 | public function __set($key, $value) 76 | { 77 | $this->attributes[$key] = $value; 78 | } 79 | 80 | } -------------------------------------------------------------------------------- /laravel/memcached.php: -------------------------------------------------------------------------------- 1 | 16 | * // Get the Memcache connection and get an item from the cache 17 | * $name = Memcached::connection()->get('name'); 18 | * 19 | * // Get the Memcache connection and place an item in the cache 20 | * Memcached::connection()->set('name', 'Taylor'); 21 | * 22 | * 23 | * @return Memcached 24 | */ 25 | public static function connection() 26 | { 27 | if (is_null(static::$connection)) 28 | { 29 | static::$connection = static::connect(Config::get('cache.memcached')); 30 | } 31 | 32 | return static::$connection; 33 | } 34 | 35 | /** 36 | * Create a new Memcached connection instance. 37 | * 38 | * @param array $servers 39 | * @return Memcached 40 | */ 41 | protected static function connect($servers) 42 | { 43 | $memcache = new \Memcache; 44 | 45 | foreach ($servers as $server) 46 | { 47 | $memcache->addServer($server['host'], $server['port'], true, $server['weight']); 48 | } 49 | 50 | if ($memcache->getVersion() === false) 51 | { 52 | throw new \Exception('Could not establish memcached connection.'); 53 | } 54 | 55 | return $memcache; 56 | } 57 | 58 | /** 59 | * Dynamically pass all other method calls to the Memcache instance. 60 | * 61 | * 62 | * // Get an item from the Memcache instance 63 | * $name = Memcached::get('name'); 64 | * 65 | * // Store data on the Memcache server 66 | * Memcached::set('name', 'Taylor'); 67 | * 68 | */ 69 | public static function __callStatic($method, $parameters) 70 | { 71 | return call_user_func_array(array(static::instance(), $method), $parameters); 72 | } 73 | 74 | } -------------------------------------------------------------------------------- /laravel/session/drivers/file.php: -------------------------------------------------------------------------------- 1 | path = $path; 21 | } 22 | 23 | /** 24 | * Load a session from storage by a given ID. 25 | * 26 | * If no session is found for the ID, null will be returned. 27 | * 28 | * @param string $id 29 | * @return array 30 | */ 31 | public function load($id) 32 | { 33 | if (file_exists($path = $this->path.$id)) 34 | { 35 | return unserialize(file_get_contents($path)); 36 | } 37 | } 38 | 39 | /** 40 | * Save a given session to storage. 41 | * 42 | * @param array $session 43 | * @param array $config 44 | * @param bool $exists 45 | * @return void 46 | */ 47 | public function save($session, $config, $exists) 48 | { 49 | file_put_contents($this->path.$session['id'], serialize($session), LOCK_EX); 50 | } 51 | 52 | /** 53 | * Delete a session from storage by a given ID. 54 | * 55 | * @param string $id 56 | * @return void 57 | */ 58 | public function delete($id) 59 | { 60 | if (file_exists($this->path.$id)) 61 | { 62 | @unlink($this->path.$id); 63 | } 64 | } 65 | 66 | /** 67 | * Delete all expired sessions from persistant storage. 68 | * 69 | * @param int $expiration 70 | * @return void 71 | */ 72 | public function sweep($expiration) 73 | { 74 | $files = glob($this->path.'*'); 75 | 76 | if ($files === false) return; 77 | 78 | foreach ($files as $file) 79 | { 80 | if (filetype($file) == 'file' and filemtime($file) < $expiration) 81 | { 82 | @unlink($file); 83 | } 84 | } 85 | } 86 | 87 | } -------------------------------------------------------------------------------- /bundles/pingdom/pingdom.css: -------------------------------------------------------------------------------- 1 | .pingdom ul { 2 | height: 142px; 3 | overflow: auto; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .pingdom ul li:first-child { 10 | border-left: none; 11 | } 12 | .pingdom li { 13 | height: 120px; 14 | widgth: 200px; 15 | padding: 9px 10px; 16 | border-left: 1px solid #666667; 17 | width: 160px; 18 | padding: 10px; 19 | position: relative; 20 | line-height: 120%; 21 | display: inline-block; 22 | vertical-align: top; 23 | } 24 | 25 | section.large .pingdom li {width: 260px} 26 | section.medium .pingdom li {width: 258px} 27 | section.small .pingdom li {width: 258px} 28 | 29 | 30 | .pingdom .msg { 31 | float: left; 32 | min-width: 20px; 33 | } 34 | 35 | .pingdom .status { 36 | float: left; 37 | width: 38px; 38 | height: 38px; 39 | } 40 | 41 | .pingdom .status.up { 42 | width: 0; 43 | height: 0; 44 | border-left: 30px solid transparent; 45 | border-right: 30px solid transparent; 46 | 47 | border-bottom: 30px solid #77AB13; 48 | } 49 | 50 | .pingdom .status.down { 51 | width: 0; 52 | height: 0; 53 | border-left: 30px solid transparent; 54 | border-right: 30px solid transparent; 55 | 56 | border-top: 30px solid #a62f19; 57 | } 58 | 59 | .pingdom .up a {font-size: 2em; color:#77AB13} 60 | .pingdom .down a{font-size: 2em; color:#a62f19} 61 | .pingdom .unconfirmed_down a, .pingdom .unknown a, .pingdom .paused a {font-size: 2em; color: #FFA84C} 62 | 63 | .pingdom .name { 64 | float: right; 65 | color: #FFA84C; 66 | text-align: left; 67 | width: 20%; 68 | } 69 | 70 | .b-server-time { margin-top: 20px; } 71 | .b-server-downtime {float: left;max-width: 150px;min-width: 90px;padding: 5px 10px 5px 0;} 72 | .b-server-uptime {float: left;padding: 5px 0 5px 0;} 73 | .t-small {color: #777;} 74 | .t-main {color: #D3D4D4;text-shadow: 1px 1px 1px #3F3F3F, -1px -1px 1px #3F3F3F;} 75 | .t-size-x11 {font-size: 11px;} 76 | .t-size-x18 {font-size: 18px;} -------------------------------------------------------------------------------- /widgets/pingdom/pingdom.css: -------------------------------------------------------------------------------- 1 | .pingdom ul { 2 | height: 142px; 3 | overflow: auto; 4 | list-style: none; 5 | list-style-image: none; 6 | padding: 0; 7 | margin: 0; 8 | } 9 | .pingdom ul li:first-child { 10 | border-left: none; 11 | } 12 | .pingdom li { 13 | height: 120px; 14 | widgth: 200px; 15 | padding: 9px 10px; 16 | border-left: 1px solid #666667; 17 | width: 160px; 18 | padding: 10px; 19 | position: relative; 20 | line-height: 120%; 21 | display: inline-block; 22 | vertical-align: top; 23 | } 24 | 25 | section.large .pingdom li {width: 260px} 26 | section.medium .pingdom li {width: 258px} 27 | section.small .pingdom li {width: 258px} 28 | 29 | 30 | .pingdom .msg { 31 | float: left; 32 | min-width: 20px; 33 | } 34 | 35 | .pingdom .status { 36 | float: left; 37 | width: 38px; 38 | height: 38px; 39 | } 40 | 41 | .pingdom .status.up { 42 | width: 0; 43 | height: 0; 44 | border-left: 30px solid transparent; 45 | border-right: 30px solid transparent; 46 | 47 | border-bottom: 30px solid #77AB13; 48 | } 49 | 50 | .pingdom .status.down { 51 | width: 0; 52 | height: 0; 53 | border-left: 30px solid transparent; 54 | border-right: 30px solid transparent; 55 | 56 | border-top: 30px solid #a62f19; 57 | } 58 | 59 | .pingdom .up a {font-size: 2em; color:#77AB13} 60 | .pingdom .down a{font-size: 2em; color:#a62f19} 61 | .pingdom .unconfirmed_down a, .pingdom .unknown a, .pingdom .paused a {font-size: 2em; color: #FFA84C} 62 | 63 | .pingdom .name { 64 | float: right; 65 | color: #FFA84C; 66 | text-align: left; 67 | width: 20%; 68 | } 69 | 70 | .b-server-time { margin-top: 20px; } 71 | .b-server-downtime {float: left;max-width: 150px;min-width: 90px;padding: 5px 10px 5px 0;} 72 | .b-server-uptime {float: left;padding: 5px 0 5px 0;} 73 | .t-small {color: #777;} 74 | .t-main {color: #D3D4D4;text-shadow: 1px 1px 1px #3F3F3F, -1px -1px 1px #3F3F3F;} 75 | .t-size-x11 {font-size: 11px;} 76 | .t-size-x18 {font-size: 18px;} -------------------------------------------------------------------------------- /bundles/analytics/views/search_medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 | 13 | 28 | 55 | 56 |
57 |
-------------------------------------------------------------------------------- /widgets/analytics/views/search_medium.php: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |

7 |
8 |
9 | 10 | 11 | 12 | 13 | 28 | 55 | 56 |
57 |
-------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Status Board 2 | 3 | ## Ideas 4 | 5 | Here are the ideas behind the status board script: 6 | 7 | 1. Self hosted and open source 8 | 2. Simple and elegant code 9 | 3. Modular and easy to add new status widgets 10 | 11 | ## Current Widgets 12 | 13 | * Authentic Jobs 14 | * Google Analytics 15 | * GitHub commit log 16 | * GitHub issues 17 | * Pingdom 18 | * RSS 19 | * Stocks 20 | * Twitter 21 | * Weather 22 | 23 | ## Widget Ideas 24 | 25 | * Basecamp 26 | * News Feeds 27 | * Bus / Train / Traffic status 28 | * Radio - Spotify, Grooveshark, etc. Would play based off api. 29 | * BitBucket API 30 | * Pancake Payments 31 | * Anything that you always want to look at during the day 32 | 33 | ## Requirements 34 | 35 | Since the application is built on Laravel, a PHP framework, the requirements are PHP 5.3+ and a compatible web server. 36 | 37 | ## Installation and Usage 38 | 39 | Installation is very easy. Upload the files to your server and visit 40 | http://example.com/index.php. All of the default widgets should 41 | load. To manage widgets, edit `application/config/widgets.php`. The 42 | application also supports the creation of multiple boards. These are 43 | configured in `application/config/boards.php` and you'll need to 44 | register another route in `application/routes.php`. 45 | 46 | Widgets are being transitioned into bundles, so the files in 47 | `widgets/` and `bundles/` will look similar if not the same. Only 48 | changes to the files in `bundles/` will be reflected in the boards. 49 | 50 | Remember, this is alpha code so use at your own risk. 51 | 52 | ## Help Out 53 | 54 | If you are interested in helping out let me know. The more help the better ;) I haven't figured the best route for 55 | project planning so if you have any ideas on the best way let me know. When I mentioned this idea over twitter I did 56 | get a lot of positive feedback so I feel this project is worth pursuing. 57 | 58 | Also until I get everything planned consider [subscribing to a newsletter](http://eepurl.com/hzTZE). I am planning to 59 | use that so I can contact everyone to schedule a time and place for v1 planning. 60 | -------------------------------------------------------------------------------- /public/js/core.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | $('section').each(function(index) { 4 | init_widget(this); 5 | }); 6 | 7 | $("div.sortable").sortable({ 8 | update: save_widget_positions, 9 | placeholder: "ui-state-highlight", 10 | opacity: 0.35, 11 | distance: 30, 12 | handle: 'header', 13 | cursor: 'move', 14 | forcePlaceholderSize: true, 15 | items: 'section', 16 | revert: true 17 | }); 18 | $( "div.sortable" ).disableSelection(); 19 | 20 | function init_widget(widget) { 21 | var name = $(widget).attr("data-widget"); 22 | var data = $(widget).data(); 23 | 24 | // This is nasty but couldn't think 25 | // of a better way at this time. 26 | var a = []; 27 | for (key in data) { 28 | a.push(key+"="+data[key]); 29 | } 30 | a.push("size="+$(widget).attr('class')); 31 | var serialized = a.join("&"); 32 | 33 | // Initial loading of widget 34 | load_widget(widget, name, serialized); 35 | 36 | // Set timer to refresh widget 37 | var interval = $(widget).attr('data-interval'); 38 | if (interval) { 39 | setInterval(function() { 40 | load_widget(widget, name, serialized); 41 | }, interval * 1000); 42 | } 43 | 44 | return false; 45 | } 46 | 47 | function load_widget(widget, name, data) { 48 | $(widget).html('
').fadeIn(); 49 | 50 | $.ajax({ 51 | data: data, 52 | dataType: "html", 53 | type: "POST", 54 | url: SITE_URL+name+"?"+new Date().getTime(), 55 | success: function(data) { 56 | $(widget).html(data).fadeIn(); 57 | } 58 | }); 59 | return false; 60 | } 61 | 62 | function save_widget_positions() { 63 | // get the widget config values 64 | var a = []; 65 | $('section').each(function(item){ 66 | a.push($(this).attr('data-config')); 67 | }); 68 | 69 | var names = a.join(","); 70 | 71 | $.ajax({ 72 | data: {names: names}, 73 | dataType: "html", 74 | type: "POST", 75 | url: SITE_URL+"save"+"?"+new Date().getTime(), 76 | success: function(data) { 77 | // place nice user message here 78 | } 79 | }); 80 | //return false; 81 | } 82 | }); -------------------------------------------------------------------------------- /laravel/cache/drivers/file.php: -------------------------------------------------------------------------------- 1 | path = $path; 21 | } 22 | 23 | /** 24 | * Determine if an item exists in the cache. 25 | * 26 | * @param string $key 27 | * @return bool 28 | */ 29 | public function has($key) 30 | { 31 | return ( ! is_null($this->get($key))); 32 | } 33 | 34 | /** 35 | * Retrieve an item from the cache driver. 36 | * 37 | * @param string $key 38 | * @return mixed 39 | */ 40 | protected function retrieve($key) 41 | { 42 | if ( ! file_exists($this->path.$key)) return null; 43 | 44 | // File based caches store have the expiration timestamp stored in 45 | // UNIX format prepended to their contents. This timestamp is then 46 | // extracted and removed when the cache is read to determine if 47 | // the file is still valid. 48 | if (time() >= substr($cache = file_get_contents($this->path.$key), 0, 10)) 49 | { 50 | return $this->forget($key); 51 | } 52 | 53 | return unserialize(substr($cache, 10)); 54 | } 55 | 56 | /** 57 | * Write an item to the cache for a given number of minutes. 58 | * 59 | * 60 | * // Put an item in the cache for 15 minutes 61 | * Cache::put('name', 'Taylor', 15); 62 | * 63 | * 64 | * @param string $key 65 | * @param mixed $value 66 | * @param int $minutes 67 | * @return void 68 | */ 69 | public function put($key, $value, $minutes) 70 | { 71 | $value = $this->expiration($minutes).serialize($value); 72 | 73 | file_put_contents($this->path.$key, $value, LOCK_EX); 74 | } 75 | 76 | /** 77 | * Delete an item from the cache. 78 | * 79 | * @param string $key 80 | * @return void 81 | */ 82 | public function forget($key) 83 | { 84 | if (file_exists($this->path.$key)) @unlink($this->path.$key); 85 | } 86 | 87 | } -------------------------------------------------------------------------------- /public/less/modals.less: -------------------------------------------------------------------------------- 1 | // MODALS 2 | // ------ 3 | 4 | // Recalculate z-index where appropriate 5 | .modal-open { 6 | .dropdown-menu { z-index: @zindexDropdown + @zindexModal; } 7 | .dropdown.open { *z-index: @zindexDropdown + @zindexModal; } 8 | .popover { z-index: @zindexPopover + @zindexModal; } 9 | .tooltip { z-index: @zindexTooltip + @zindexModal; } 10 | } 11 | 12 | // Background 13 | .modal-backdrop { 14 | position: fixed; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | z-index: @zindexModalBackdrop; 20 | background-color: @black; 21 | // Fade for backdrop 22 | &.fade { opacity: 0; } 23 | } 24 | 25 | .modal-backdrop, 26 | .modal-backdrop.fade.in { 27 | .opacity(80); 28 | } 29 | 30 | // Base modal 31 | .modal { 32 | position: fixed; 33 | top: 50%; 34 | left: 50%; 35 | z-index: @zindexModal; 36 | max-height: 500px; 37 | overflow: auto; 38 | width: 560px; 39 | margin: -250px 0 0 -280px; 40 | background-color: @white; 41 | border: 1px solid #999; 42 | border: 1px solid rgba(0,0,0,.3); 43 | *border: 1px solid #999; /* IE6-7 */ 44 | .border-radius(6px); 45 | .box-shadow(0 3px 7px rgba(0,0,0,0.3)); 46 | .background-clip(padding-box); 47 | &.fade { 48 | .transition(e('opacity .3s linear, top .3s ease-out')); 49 | top: -25%; 50 | } 51 | &.fade.in { top: 50%; } 52 | } 53 | .modal-header { 54 | padding: 9px 15px; 55 | border-bottom: 1px solid #eee; 56 | // Close icon 57 | .close { margin-top: 2px; } 58 | } 59 | 60 | // Body (where all modal content resises) 61 | .modal-body { 62 | padding: 15px; 63 | } 64 | // Remove bottom margin if need be 65 | .modal-body .modal-form { 66 | margin-bottom: 0; 67 | } 68 | 69 | // Footer (for actions) 70 | .modal-footer { 71 | padding: 14px 15px 15px; 72 | margin-bottom: 0; 73 | background-color: #f5f5f5; 74 | border-top: 1px solid #ddd; 75 | .border-radius(0 0 6px 6px); 76 | .box-shadow(inset 0 1px 0 @white); 77 | .clearfix(); 78 | .btn { 79 | float: right; 80 | margin-left: 5px; 81 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /laravel/cli/tasks/migrate/database.php: -------------------------------------------------------------------------------- 1 | table()->insert(compact('bundle', 'name', 'batch')); 19 | } 20 | 21 | /** 22 | * Delete a row from the migration table. 23 | * 24 | * @param string $bundle 25 | * @param string $name 26 | * @return void 27 | */ 28 | public function delete($bundle, $name) 29 | { 30 | $this->table()->where_bundle_and_name($bundle, $name)->delete(); 31 | } 32 | 33 | /** 34 | * Return an array of the last batch of migrations. 35 | * 36 | * @return array 37 | */ 38 | public function last() 39 | { 40 | $table = $this->table(); 41 | 42 | // First we need to grab the last batch ID from the migration table, 43 | // as this will allow us to grab the lastest batch of migrations 44 | // that need to be run for a rollback command. 45 | $id = $this->batch(); 46 | 47 | // Once we have the batch ID, we will pull all of the rows for that 48 | // batch. Then we can feed the results into the resolve method to 49 | // get the migration instances for the command. 50 | return $table->where_batch($id)->order_by('name', 'desc')->get(); 51 | } 52 | 53 | /** 54 | * Get all of the migrations that have run for a bundle. 55 | * 56 | * @param string $bundle 57 | * @return array 58 | */ 59 | public function ran($bundle) 60 | { 61 | return $this->table()->where_bundle($bundle)->lists('name'); 62 | } 63 | 64 | /** 65 | * Get the maximum batch ID from the migration table. 66 | * 67 | * @return int 68 | */ 69 | public function batch() 70 | { 71 | return $this->table()->max('batch'); 72 | } 73 | 74 | /** 75 | * Get a database query instance for the migration table. 76 | * 77 | * @return Laravel\Database\Query 78 | */ 79 | protected function table() 80 | { 81 | return DB::connection(Request::server('cli.db'))->table('laravel_migrations'); 82 | } 83 | 84 | } -------------------------------------------------------------------------------- /application/views/layouts/common.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | <?php echo $page_title;?> 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 | 23 | $widget): ?> 24 | 25 |
data-interval="" data-config="" data-widget="">
26 | 27 | 28 | 29 |
Error: There are no board settings setup
30 | 31 |
32 |
33 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /laravel/cli/tasks/bundle/providers/provider.php: -------------------------------------------------------------------------------- 1 | download($url)); 34 | 35 | $zip = new \ZipArchive; 36 | 37 | $zip->open($target); 38 | 39 | // Once we have the Zip archive, we can open it and extract it 40 | // into the working directory. By convention, we expect the 41 | // archive to contain one root directory with the bundle. 42 | mkdir($work.'zip'); 43 | 44 | $zip->extractTo($work.'zip'); 45 | 46 | $latest = File::latest($work.'zip')->getRealPath(); 47 | 48 | @chmod($latest, 0777); 49 | 50 | // Once we have the latest modified directory, we should be 51 | // able to move its contents over into the bundles folder 52 | // so the bundle will be usable by the develoepr. 53 | File::mvdir($latest, $path); 54 | 55 | File::rmdir($work.'zip'); 56 | 57 | @unlink($target); 58 | } 59 | 60 | /** 61 | * Download a remote zip archive from a URL. 62 | * 63 | * @param string $url 64 | * @return string 65 | */ 66 | protected function download($url) 67 | { 68 | $remote = file_get_contents($url); 69 | 70 | // If we were unable to download the zip archive correctly 71 | // we'll bomb out since we don't want to extract the last 72 | // zip that was put in the storage directory. 73 | if ($remote === false) 74 | { 75 | throw new \Exception("Error downloading bundle [{$bundle}]."); 76 | } 77 | 78 | return $remote; 79 | } 80 | 81 | } -------------------------------------------------------------------------------- /public/less/progress-bars.less: -------------------------------------------------------------------------------- 1 | // PROGRESS BARS 2 | // ------------- 3 | 4 | 5 | // ANIMATIONS 6 | // ---------- 7 | 8 | // Webkit 9 | @-webkit-keyframes progress-bar-stripes { 10 | from { background-position: 0 0; } 11 | to { background-position: 40px 0; } 12 | } 13 | 14 | // Firefox 15 | @-moz-keyframes progress-bar-stripes { 16 | from { background-position: 0 0; } 17 | to { background-position: 40px 0; } 18 | } 19 | 20 | // Spec 21 | @keyframes progress-bar-stripes { 22 | from { background-position: 0 0; } 23 | to { background-position: 40px 0; } 24 | } 25 | 26 | 27 | 28 | // THE BARS 29 | // -------- 30 | 31 | // Outer container 32 | .progress { 33 | overflow: hidden; 34 | height: 18px; 35 | margin-bottom: 18px; 36 | #gradient > .vertical(#f5f5f5, #f9f9f9); 37 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 38 | .border-radius(4px); 39 | } 40 | 41 | // Bar of progress 42 | .progress .bar { 43 | width: 0%; 44 | height: 18px; 45 | color: @white; 46 | font-size: 12px; 47 | text-align: center; 48 | text-shadow: 0 -1px 0 rgba(0,0,0,.25); 49 | #gradient > .vertical(#149bdf, #0480be); 50 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 51 | .box-sizing(border-box); 52 | .transition(width .6s ease); 53 | } 54 | 55 | // Striped bars 56 | .progress-striped .bar { 57 | #gradient > .striped(#62c462); 58 | .background-size(40px 40px); 59 | } 60 | 61 | // Call animation for the active one 62 | .progress.active .bar { 63 | -webkit-animation: progress-bar-stripes 2s linear infinite; 64 | -moz-animation: progress-bar-stripes 2s linear infinite; 65 | animation: progress-bar-stripes 2s linear infinite; 66 | } 67 | 68 | 69 | 70 | // COLORS 71 | // ------ 72 | 73 | // Danger (red) 74 | .progress-danger .bar { 75 | #gradient > .vertical(#ee5f5b, #c43c35); 76 | } 77 | .progress-danger.progress-striped .bar { 78 | #gradient > .striped(#ee5f5b); 79 | } 80 | 81 | // Success (green) 82 | .progress-success .bar { 83 | #gradient > .vertical(#62c462, #57a957); 84 | } 85 | .progress-success.progress-striped .bar { 86 | #gradient > .striped(#62c462); 87 | } 88 | 89 | // Info (teal) 90 | .progress-info .bar { 91 | #gradient > .vertical(#5bc0de, #339bb9); 92 | } 93 | .progress-info.progress-striped .bar { 94 | #gradient > .striped(#5bc0de); 95 | } 96 | -------------------------------------------------------------------------------- /laravel/cache.php: -------------------------------------------------------------------------------- 1 | 18 | * // Get the default cache driver instance 19 | * $driver = Cache::driver(); 20 | * 21 | * // Get a specific cache driver instance by name 22 | * $driver = Cache::driver('memcached'); 23 | * 24 | * 25 | * @param string $driver 26 | * @return Cache\Drivers\Driver 27 | */ 28 | public static function driver($driver = null) 29 | { 30 | if (is_null($driver)) $driver = Config::get('cache.driver'); 31 | 32 | if ( ! isset(static::$drivers[$driver])) 33 | { 34 | static::$drivers[$driver] = static::factory($driver); 35 | } 36 | 37 | return static::$drivers[$driver]; 38 | } 39 | 40 | /** 41 | * Create a new cache driver instance. 42 | * 43 | * @param string $driver 44 | * @return Cache\Drivers\Driver 45 | */ 46 | protected static function factory($driver) 47 | { 48 | switch ($driver) 49 | { 50 | case 'apc': 51 | return new Cache\Drivers\APC(Config::get('cache.key')); 52 | 53 | case 'file': 54 | return new Cache\Drivers\File(path('storage').'cache'.DS); 55 | 56 | case 'memcached': 57 | return new Cache\Drivers\Memcached(Memcached::connection(), Config::get('cache.key')); 58 | 59 | case 'redis': 60 | return new Cache\Drivers\Redis(Redis::db()); 61 | 62 | case 'database': 63 | return new Cache\Drivers\Database(Config::get('cache.key')); 64 | 65 | default: 66 | throw new \Exception("Cache driver {$driver} is not supported."); 67 | } 68 | } 69 | 70 | /** 71 | * Magic Method for calling the methods on the default cache driver. 72 | * 73 | * 74 | * // Call the "get" method on the default cache driver 75 | * $name = Cache::get('name'); 76 | * 77 | * // Call the "put" method on the default cache driver 78 | * Cache::put('name', 'Taylor', 15); 79 | * 80 | */ 81 | public static function __callStatic($method, $parameters) 82 | { 83 | return call_user_func_array(array(static::driver(), $method), $parameters); 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /bundles/githubissues/php-github-api/lib/Github/Api/Commit.php: -------------------------------------------------------------------------------- 1 | 9 | * @license MIT License 10 | */ 11 | class Github_Api_Commit extends Github_Api 12 | { 13 | /** 14 | * List commits by username, repo and branch 15 | * http://develop.github.com/p/commits.html#listing_commits_on_a_branch 16 | * 17 | * @param string $username the username 18 | * @param string $repo the repo 19 | * @param string $branch the branch 20 | * @return array list of users found 21 | */ 22 | public function getBranchCommits($username, $repo, $branch) 23 | { 24 | $response = $this->get('commits/list/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($branch)); 25 | 26 | return $response['commits']; 27 | } 28 | 29 | /** 30 | * List commits by username, repo, branch and path 31 | * http://develop.github.com/p/commits.html#listing_commits_for_a_file 32 | * 33 | * @param string $username the username 34 | * @param string $repo the repo 35 | * @param string $branch the branch 36 | * @param string $path the path 37 | * @return array list of users found 38 | */ 39 | public function getFileCommits($username, $repo, $branch, $path) 40 | { 41 | $response = $this->get('commits/list/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($branch).'/'.urlencode($path)); 42 | 43 | return $response['commits']; 44 | } 45 | 46 | /** 47 | * Show a specific commit 48 | * http://develop.github.com/p/commits.html#showing_a_specific_commit 49 | * 50 | * @param string $username the username 51 | * @param string $repo the repo 52 | * @param string $sha the commit sha 53 | */ 54 | public function getCommit($username, $repo, $sha) 55 | { 56 | $response = $this->get('commits/show/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($sha)); 57 | 58 | return $response['commit']; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) <2012> 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | Developer’s Certificate of Origin 1.1 23 | 24 | By making a contribution to this project, I certify that: 25 | 26 | (a) The contribution was created in whole or in part by me and I 27 | have the right to submit it under the open source license 28 | indicated in the file; or 29 | 30 | (b) The contribution is based upon previous work that, to the best 31 | of my knowledge, is covered under an appropriate open source 32 | license and I have the right under that license to submit that 33 | work with modifications, whether created in whole or in part 34 | by me, under the same open source license (unless I am 35 | permitted to submit under a different license), as indicated 36 | in the file; or 37 | 38 | (c) The contribution was provided directly to me by some other 39 | person who certified (a), (b) or (c) and I have not modified 40 | it. 41 | 42 | (d) I understand and agree that this project and the contribution 43 | are public and that a record of the contribution (including all 44 | personal information I submit with it, including my sign-off) is 45 | maintained indefinitely and may be redistributed consistent with 46 | this project or the open source license(s) involved. -------------------------------------------------------------------------------- /widgets/githubissues/php-github-api/lib/Github/Api/Commit.php: -------------------------------------------------------------------------------- 1 | 9 | * @license MIT License 10 | */ 11 | class Github_Api_Commit extends Github_Api 12 | { 13 | /** 14 | * List commits by username, repo and branch 15 | * http://develop.github.com/p/commits.html#listing_commits_on_a_branch 16 | * 17 | * @param string $username the username 18 | * @param string $repo the repo 19 | * @param string $branch the branch 20 | * @return array list of users found 21 | */ 22 | public function getBranchCommits($username, $repo, $branch) 23 | { 24 | $response = $this->get('commits/list/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($branch)); 25 | 26 | return $response['commits']; 27 | } 28 | 29 | /** 30 | * List commits by username, repo, branch and path 31 | * http://develop.github.com/p/commits.html#listing_commits_for_a_file 32 | * 33 | * @param string $username the username 34 | * @param string $repo the repo 35 | * @param string $branch the branch 36 | * @param string $path the path 37 | * @return array list of users found 38 | */ 39 | public function getFileCommits($username, $repo, $branch, $path) 40 | { 41 | $response = $this->get('commits/list/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($branch).'/'.urlencode($path)); 42 | 43 | return $response['commits']; 44 | } 45 | 46 | /** 47 | * Show a specific commit 48 | * http://develop.github.com/p/commits.html#showing_a_specific_commit 49 | * 50 | * @param string $username the username 51 | * @param string $repo the repo 52 | * @param string $sha the commit sha 53 | */ 54 | public function getCommit($username, $repo, $sha) 55 | { 56 | $response = $this->get('commits/show/'.urlencode($username).'/'.urlencode($repo).'/'.urlencode($sha)); 57 | 58 | return $response['commit']; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /bundles/analytics/analytics.css: -------------------------------------------------------------------------------- 1 | .chart { 2 | float: left; 3 | width: 540px; 4 | } 5 | .analytics_details { 6 | float: right; 7 | width: 25%; 8 | } 9 | .analytics_details h2 { 10 | font: normal 16px/130% Verdana, Arial, Helvetica, sans-serif; 11 | margin: 0 0 0 20px; 12 | line-height: 40px; 13 | padding-left: 10px; 14 | padding-bottom: 0; 15 | } 16 | .box { 17 | padding: 5px 15px; 18 | margin: 20px 0 0 0; 19 | text-align: center; 20 | width: 150px; 21 | position: relative; 22 | border: 1px solid black; 23 | background: black; 24 | border-image: initial; 25 | border-radius: 5px; 26 | } 27 | .box h2 { 28 | font-size: 20px; 29 | margin: 0 10px 0 0; 30 | padding: 0; 31 | color: #ACC314; 32 | line-height: 30px; 33 | } 34 | .box h5 { 35 | font-size: 12px; 36 | color: white; 37 | text-transform: uppercase; 38 | font-weight: normal; 39 | margin: 0; 40 | padding: 0; 41 | line-height: 30px; 42 | } 43 | 44 | .top_content ul { 45 | overflow: auto; 46 | list-style: none; 47 | list-style-image: none; 48 | padding: 0; 49 | margin: 0; 50 | clear: both; 51 | } 52 | .top_content ul.top_search { 53 | overflow: auto; 54 | list-style: none; 55 | list-style-image: none; 56 | padding: 0; 57 | margin: 0; 58 | clear: both; 59 | display: inline-block; 60 | width: 48% 61 | } 62 | .top_content li { 63 | padding: 3px 10px; 64 | height: auto; 65 | position: relative; 66 | line-height: 110%; 67 | } 68 | .top_content .msg { 69 | float: left; 70 | min-width: 150px; 71 | width: 75%; 72 | } 73 | .top_content .keyword { 74 | float: left; 75 | min-width: 150px; 76 | width: 30%; 77 | } 78 | .top_content .views { 79 | float: left; 80 | color: #FFA84C; 81 | text-align: left; 82 | width: 5%; 83 | text-align: right; 84 | padding-right: 10px; 85 | } 86 | .top_content .time { 87 | float: left; 88 | color: #FFA84C; 89 | text-align: left; 90 | width: 5%; 91 | } 92 | .top_content .top_search .views { 93 | float: left; 94 | color: #FFA84C; 95 | text-align: left; 96 | width: 10%; 97 | text-align: right; 98 | padding-right: 10px; 99 | } 100 | .top_content .top_search .time { 101 | float: left; 102 | color: #FFA84C; 103 | text-align: left; 104 | width: 18%; 105 | } 106 | .top_content .head { 107 | text-align: left; 108 | font-size: 1.1em; 109 | font-weight: bold; 110 | color: #FFA84C; 111 | } -------------------------------------------------------------------------------- /laravel/event.php: -------------------------------------------------------------------------------- 1 | 27 | * // Register a callback for the "start" event 28 | * Event::listen('start', function() {return 'Started!';}); 29 | * 30 | * // Register an object instance callback for the given event 31 | * Event::listen('event', array($object, 'method')); 32 | * 33 | * 34 | * @param string $event 35 | * @param mixed $callback 36 | * @return void 37 | */ 38 | public static function listen($event, $callback) 39 | { 40 | static::$events[$event][] = $callback; 41 | } 42 | 43 | /** 44 | * Fire an event and return the first response. 45 | * 46 | * 47 | * // Fire the "start" event 48 | * $response = Event::first('start'); 49 | * 50 | * // Fire the "start" event passing an array of parameters 51 | * $response = Event::first('start', array('Laravel', 'Framework')); 52 | * 53 | * 54 | * @param string $event 55 | * @param array $parameters 56 | * @return mixed 57 | */ 58 | public static function first($event, $parameters = array()) 59 | { 60 | return head(static::fire($event, $parameters)); 61 | } 62 | 63 | /** 64 | * Fire an event so that all listeners are called. 65 | * 66 | * 67 | * // Fire the "start" event 68 | * $responses = Event::fire('start'); 69 | * 70 | * // Fire the "start" event passing an array of parameters 71 | * $responses = Event::fire('start', array('Laravel', 'Framework')); 72 | * 73 | * 74 | * @param string $event 75 | * @param array $parameters 76 | * @return array 77 | */ 78 | public static function fire($event, $parameters = array()) 79 | { 80 | $responses = array(); 81 | 82 | if (static::listeners($event)) 83 | { 84 | foreach (static::$events[$event] as $callback) 85 | { 86 | $responses[] = call_user_func_array($callback, $parameters); 87 | } 88 | } 89 | 90 | return $responses; 91 | } 92 | 93 | } -------------------------------------------------------------------------------- /widgets/analytics/analytics.css: -------------------------------------------------------------------------------- 1 | .chart { 2 | float: left; 3 | width: 540px; 4 | } 5 | .analytics_details { 6 | float: right; 7 | width: 25%; 8 | } 9 | .analytics_details h2 { 10 | font: normal 16px/130% Verdana, Arial, Helvetica, sans-serif; 11 | margin: 0 0 0 20px; 12 | line-height: 40px; 13 | padding-left: 10px; 14 | padding-bottom: 0; 15 | } 16 | .box { 17 | padding: 5px 15px; 18 | margin: 20px 0 0 0; 19 | text-align: center; 20 | width: 150px; 21 | position: relative; 22 | border: 1px solid black; 23 | background: black; 24 | border-image: initial; 25 | border-radius: 5px; 26 | } 27 | .box h2 { 28 | font-size: 20px; 29 | margin: 0 10px 0 0; 30 | padding: 0; 31 | color: #ACC314; 32 | line-height: 30px; 33 | } 34 | .box h5 { 35 | font-size: 12px; 36 | color: white; 37 | text-transform: uppercase; 38 | font-weight: normal; 39 | margin: 0; 40 | padding: 0; 41 | line-height: 30px; 42 | } 43 | 44 | .top_content ul { 45 | overflow: auto; 46 | list-style: none; 47 | list-style-image: none; 48 | padding: 0; 49 | margin: 0; 50 | clear: both; 51 | } 52 | .top_content ul.top_search { 53 | overflow: auto; 54 | list-style: none; 55 | list-style-image: none; 56 | padding: 0; 57 | margin: 0; 58 | clear: both; 59 | display: inline-block; 60 | width: 48% 61 | } 62 | .top_content li { 63 | padding: 3px 10px; 64 | height: auto; 65 | position: relative; 66 | line-height: 110%; 67 | } 68 | .top_content .msg { 69 | float: left; 70 | min-width: 150px; 71 | width: 75%; 72 | } 73 | .top_content .keyword { 74 | float: left; 75 | min-width: 150px; 76 | width: 30%; 77 | } 78 | .top_content .views { 79 | float: left; 80 | color: #FFA84C; 81 | text-align: left; 82 | width: 5%; 83 | text-align: right; 84 | padding-right: 10px; 85 | } 86 | .top_content .time { 87 | float: left; 88 | color: #FFA84C; 89 | text-align: left; 90 | width: 5%; 91 | } 92 | .top_content .top_search .views { 93 | float: left; 94 | color: #FFA84C; 95 | text-align: left; 96 | width: 10%; 97 | text-align: right; 98 | padding-right: 10px; 99 | } 100 | .top_content .top_search .time { 101 | float: left; 102 | color: #FFA84C; 103 | text-align: left; 104 | width: 18%; 105 | } 106 | .top_content .head { 107 | text-align: left; 108 | font-size: 1.1em; 109 | font-weight: bold; 110 | color: #FFA84C; 111 | } -------------------------------------------------------------------------------- /laravel.license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) <2012> 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | Developer’s Certificate of Origin 1.1 23 | 24 | By making a contribution to this project, I certify that: 25 | 26 | (a) The contribution was created in whole or in part by me and I 27 | have the right to submit it under the open source license 28 | indicated in the file; or 29 | 30 | (b) The contribution is based upon previous work that, to the best 31 | of my knowledge, is covered under an appropriate open source 32 | license and I have the right under that license to submit that 33 | work with modifications, whether created in whole or in part 34 | by me, under the same open source license (unless I am 35 | permitted to submit under a different license), as indicated 36 | in the file; or 37 | 38 | (c) The contribution was provided directly to me by some other 39 | person who certified (a), (b) or (c) and I have not modified 40 | it. 41 | 42 | (d) I understand and agree that this project and the contribution 43 | are public and that a record of the contribution (including all 44 | personal information I submit with it, including my sign-off) is 45 | maintained indefinitely and may be redistributed consistent with 46 | this project or the open source license(s) involved. -------------------------------------------------------------------------------- /laravel/section.php: -------------------------------------------------------------------------------- 1 | 23 | * // Start injecting into the "header" section 24 | * Section::start('header'); 25 | * 26 | * // Inject a raw string into the "header" section without buffering 27 | * Section::start('header', 'Laravel'); 28 | * 29 | * 30 | * @param string $section 31 | * @param string|Closure $content 32 | * @return void 33 | */ 34 | public static function start($section, $content = '') 35 | { 36 | if ($content === '') ob_start() and static::$last[] = $section; 37 | 38 | static::append($section, $content); 39 | } 40 | 41 | /** 42 | * Inject inline content into a section. 43 | * 44 | * This is helpful for injecting simple strings such as page titles. 45 | * 46 | * 47 | * // Inject inline content into the "header" section 48 | * Section::inject('header', 'Laravel'); 49 | * 50 | * 51 | * @param string $section 52 | * @param string $content 53 | * @return void 54 | */ 55 | public static function inject($section, $content) 56 | { 57 | static::start($section, $content); 58 | } 59 | 60 | /** 61 | * Stop injecting content into a section. 62 | * 63 | * @return void 64 | */ 65 | public static function stop() 66 | { 67 | static::append(array_pop(static::$last), ob_get_clean()); 68 | } 69 | 70 | /** 71 | * Append content to a given section. 72 | * 73 | * @param string $section 74 | * @param string $content 75 | * @return void 76 | */ 77 | protected static function append($section, $content) 78 | { 79 | if (isset(static::$sections[$section])) 80 | { 81 | $content = static::$sections[$section].PHP_EOL.$content; 82 | } 83 | 84 | static::$sections[$section] = $content; 85 | } 86 | 87 | /** 88 | * Get the string contents of a section. 89 | * 90 | * @param string $section 91 | * @return string 92 | */ 93 | public static function yield($section) 94 | { 95 | return (isset(static::$sections[$section])) ? static::$sections[$section] : ''; 96 | } 97 | 98 | } -------------------------------------------------------------------------------- /application/views/error/500.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Error 500 - Internal Server Error 7 | 8 | 81 | 82 | 83 |
84 | 85 | 86 |

87 | 88 |

Server Error: 500 (Internal Server Error)

89 | 90 |

What does this mean?

91 | 92 |

93 | Something went wrong on our servers while we were processing your request. 94 | We're really sorry about this, and will work hard to get this resolved as 95 | soon as possible. 96 |

97 | 98 |

99 | Perhaps you would like to go to our ? 100 |

101 |
102 | 103 | --------------------------------------------------------------------------------