view release on metacpan or search on metacpan
0.024 2013-03-12
- Fix some setup bugs
- Deprecated files config key (use extra_static_paths)
- Deprecated functionality will be removed by 0.1 release
- Added mostly hidden/useless 'upload_path' system
0.023 2013-03-04
- Removed CLI config/setup commands
- Added web-based setup command
- Page and Menu controllers are now properly distinct
- Added expires helper (from being a controller method)
- Deprecated db_connect config key
- Added db_* keys (dsn, username, password, options)
- Deprecated string use of files config key (use arrayref)
- Deprecated functionality will be removed by 0.1 release
0.022 2013-02-16
- Bump ::Humane version to 0.04
0.021 2013-02-16
bin/galileo
Build.PL
Changes
lib/Galileo.pm
lib/Galileo/Admin.pm
lib/Galileo/Command/dump.pm
lib/Galileo/Command/setup.pm
lib/Galileo/DB/Deploy.pm
lib/Galileo/DB/Schema.pm
lib/Galileo/DB/Schema/Result/Menu.pm
lib/Galileo/DB/Schema/Result/Page.pm
lib/Galileo/DB/Schema/Result/User.pm
lib/Galileo/File.pm
lib/Galileo/files/public/assets/bootstrap/css/bootstrap-responsive.min.css
lib/Galileo/files/public/assets/bootstrap/css/bootstrap.min.css
lib/Galileo/files/public/assets/bootstrap/img/glyphicons-halflings-white.png
lib/Galileo/files/public/assets/bootstrap/img/glyphicons-halflings.png
lib/Galileo/files/public/assets/bootstrap/js/bootstrap.min.js
lib/Galileo/files/public/assets/html.sortable.0.3.0.min.js
lib/Galileo/files/public/assets/jquery-1.9.1.min.js
lib/Galileo/files/templates/menu/edit.html.ep
lib/Galileo/files/templates/nav_menu.html.ep
lib/Galileo/files/templates/page/edit.html.ep
lib/Galileo/files/templates/page/show.html.ep
lib/Galileo/files/templates/setup/configure.html.ep
lib/Galileo/files/templates/setup/control_group.html.ep
lib/Galileo/files/templates/setup/database.html.ep
lib/Galileo/files/templates/setup/finish.html.ep
lib/Galileo/files/templates/setup/welcome.html.ep
lib/Galileo/files/templates/user_menu.html.ep
lib/Galileo/Menu.pm
lib/Galileo/Page.pm
lib/Galileo/Plugin/Deploy.pm
lib/Galileo/Plugin/Modal.pm
lib/Galileo/User.pm
MANIFEST This list of files
t/basic.t
t/commands.t
t/locations.t
t/locations/static/test.html
t/locations/uploads/image1.jpg
"Galileo::Command::setup" : {
"file" : "lib/Galileo/Command/setup.pm"
},
"Galileo::DB::Deploy" : {
"file" : "lib/Galileo/DB/Deploy.pm"
},
"Galileo::DB::Schema" : {
"file" : "lib/Galileo/DB/Schema.pm",
"version" : "2"
},
"Galileo::DB::Schema::Result::Menu" : {
"file" : "lib/Galileo/DB/Schema/Result/Menu.pm"
},
"Galileo::DB::Schema::Result::Page" : {
"file" : "lib/Galileo/DB/Schema/Result/Page.pm"
},
"Galileo::DB::Schema::Result::User" : {
"file" : "lib/Galileo/DB/Schema/Result/User.pm"
},
"Galileo::File" : {
"file" : "lib/Galileo/File.pm"
},
"Galileo::Menu" : {
"file" : "lib/Galileo/Menu.pm"
},
"Galileo::Page" : {
"file" : "lib/Galileo/Page.pm"
},
"Galileo::Plugin::Deploy" : {
"file" : "lib/Galileo/Plugin/Deploy.pm"
},
"Galileo::Plugin::Modal" : {
"file" : "lib/Galileo/Plugin/Modal.pm"
},
file: lib/Galileo/Admin.pm
Galileo::Command::dump:
file: lib/Galileo/Command/dump.pm
Galileo::Command::setup:
file: lib/Galileo/Command/setup.pm
Galileo::DB::Deploy:
file: lib/Galileo/DB/Deploy.pm
Galileo::DB::Schema:
file: lib/Galileo/DB/Schema.pm
version: '2'
Galileo::DB::Schema::Result::Menu:
file: lib/Galileo/DB/Schema/Result/Menu.pm
Galileo::DB::Schema::Result::Page:
file: lib/Galileo/DB/Schema/Result/Page.pm
Galileo::DB::Schema::Result::User:
file: lib/Galileo/DB/Schema/Result/User.pm
Galileo::File:
file: lib/Galileo/File.pm
Galileo::Menu:
file: lib/Galileo/Menu.pm
Galileo::Page:
file: lib/Galileo/Page.pm
Galileo::Plugin::Deploy:
file: lib/Galileo/Plugin/Deploy.pm
Galileo::Plugin::Modal:
file: lib/Galileo/Plugin/Modal.pm
Galileo::User:
file: lib/Galileo/User.pm
requires:
Crypt::Eksblowfish::Bcrypt: '0'
lib/Galileo/DB/Deploy.pm view on Meta::CPAN
~~Mistaken text.~~
```
*result*:
~~Mistaken text.~~
MARKDOWN
author_id => $admin->user_id,
});
$schema->resultset('Menu')->create({
name => 'main',
list => j( [ $syntax->page_id, $about->page_id ] ),
});
}
sub create_test_object {
my $class = shift;
my $opts = ref $_[-1] eq 'HASH' ? pop : {};
require Galileo;
lib/Galileo/DB/Schema/Result/Menu.pm view on Meta::CPAN
package Galileo::DB::Schema::Result::Menu;
use DBIx::Class::Candy
-autotable => v1;
primary_column menu_id => {
data_type => 'INT',
is_auto_increment => 1,
};
unique_column name => {
lib/Galileo/Menu.pm view on Meta::CPAN
package Galileo::Menu;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::JSON 'j';
use Mojo::ByteStream 'b';
sub edit {
my $self = shift;
my $name = 'main';
my $schema = $self->schema;
my @active = @{ j(
$schema->resultset('Menu')->single({name => $name})->list
) };
my %active =
map { $_ => '' }
@active;
my @inactive;
my @pages = $schema->resultset('Page')->all;
for my $page ( @pages ) {
next unless $page;
lib/Galileo/Menu.pm view on Meta::CPAN
my $id = $page->page_id;
next if $name eq 'home';
my $li = sprintf qq{<li id="pages-%s"><span class="label label-info">%s</span></li>\n}, $id, $page->title;
if (exists $active{$id}) {
$active{$id} = $li;
} else {
push @inactive, $li;
}
}
$self->title( 'Setup Main Navigation Menu' );
$self->content_for( banner => 'Setup Main Navigation Menu' );
$self->render(
active => Mojo::ByteStream->new( join '', @active{@active} ),
inactive => Mojo::ByteStream->new( join '', @inactive ),
);
}
sub store {
my $self = shift;
$self->on( json => sub {
my ($self, $data) = @_;
my $name = $data->{name};
my $list = $data->{list};
my $schema = $self->schema;
my @pages =
map { my $page = $_; $page =~ s/^pages-//; $page}
grep { ! /^header-/ }
@$list;
$schema->resultset('Menu')->update(
{
list => j(\@pages),
},
{ key => $name }
);
$self->memorize->expire($name);
my $content = $self->include('nav_menu') || '';
$self->send({ json => {
message => 'Changes saved',
lib/Galileo/files/sql/_source/deploy/1/001-auto-__VERSION.yml view on Meta::CPAN
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args:
DBIx::Class::Schema: ~
DBIx::Schema: ~
package: &1 !!perl/hash:Galileo::DB::Schema
class_mappings:
DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
Galileo::DB::Schema::Result::Menu: Menu
Galileo::DB::Schema::Result::Page: Page
Galileo::DB::Schema::Result::User: User
source_registrations:
Menu: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
list:
data_type: VARCHAR
menu_id:
data_type: INT
is_auto_increment: 1
name:
data_type: VARCHAR
_columns_info_loaded: 0
_ordered_columns:
lib/Galileo/files/sql/_source/deploy/1/001-auto-__VERSION.yml view on Meta::CPAN
- name
- list
_primaries: &2
- menu_id
_relationships: {}
_unique_constraints:
menus_name:
- name
primary: *2
name: menus
result_class: Galileo::DB::Schema::Result::Menu
resultset_attributes: {}
resultset_class: DBIx::Class::ResultSet
schema: *1
source_name: Menu
Page: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
author_id:
data_type: INT
html:
data_type: VARCHAR
md:
data_type: VARCHAR
name:
data_type: VARCHAR
lib/Galileo/files/sql/_source/deploy/1/001-auto.yml view on Meta::CPAN
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args:
DBIx::Class::Schema: ~
DBIx::Schema: ~
package: &1 !!perl/hash:Galileo::DB::Schema
class_mappings:
DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
Galileo::DB::Schema::Result::Menu: Menu
Galileo::DB::Schema::Result::Page: Page
Galileo::DB::Schema::Result::User: User
source_registrations:
Menu: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
list:
data_type: VARCHAR
menu_id:
data_type: INT
is_auto_increment: 1
name:
data_type: VARCHAR
_columns_info_loaded: 0
_ordered_columns:
lib/Galileo/files/sql/_source/deploy/1/001-auto.yml view on Meta::CPAN
- name
- list
_primaries: &2
- menu_id
_relationships: {}
_unique_constraints:
menus_name:
- name
primary: *2
name: menus
result_class: Galileo::DB::Schema::Result::Menu
resultset_attributes: {}
resultset_class: DBIx::Class::ResultSet
schema: *1
source_name: Menu
Page: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
author_id:
data_type: INT
html:
data_type: VARCHAR
md:
data_type: VARCHAR
name:
data_type: VARCHAR
lib/Galileo/files/sql/_source/deploy/1/001-auto.yml view on Meta::CPAN
- handler: _where_op_VALUE
regex: !!perl/regexp (?^ix:^ value $)
- *7
- *8
_sql_maker_opts: {}
savepoints: []
schema: *1
transaction_depth: 0
sources:
- User
- Menu
- Page
parser_type: SQL::Translator::Parser::DBIx::Class
producer_args: {}
producer_type: SQL::Translator::Producer::YAML
show_warnings: 0
trace: 0
version: 0.11012
lib/Galileo/files/sql/_source/deploy/2/001-auto-__VERSION.yml view on Meta::CPAN
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args:
DBIx::Class::Schema: ~
DBIx::Schema: ~
package: &1 !!perl/hash:Galileo::DB::Schema
class_mappings:
DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
Galileo::DB::Schema::Result::Menu: Menu
Galileo::DB::Schema::Result::Page: Page
Galileo::DB::Schema::Result::User: User
source_registrations:
Menu: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
list:
data_type: TEXT
menu_id:
data_type: INT
is_auto_increment: 1
name:
data_type: VARCHAR
size: 255
_columns_info_loaded: 0
lib/Galileo/files/sql/_source/deploy/2/001-auto-__VERSION.yml view on Meta::CPAN
- name
- list
_primaries: &2
- menu_id
_relationships: {}
_unique_constraints:
menus_name:
- name
primary: *2
name: menus
result_class: Galileo::DB::Schema::Result::Menu
resultset_attributes: {}
resultset_class: DBIx::Class::ResultSet
schema: *1
source_name: Menu
Page: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
author_id:
data_type: INT
html:
data_type: TEXT
md:
data_type: TEXT
name:
data_type: VARCHAR
lib/Galileo/files/sql/_source/deploy/2/001-auto.yml view on Meta::CPAN
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args:
DBIx::Class::Schema: ~
DBIx::Schema: ~
package: &1 !!perl/hash:Galileo::DB::Schema
class_mappings:
DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
Galileo::DB::Schema::Result::Menu: Menu
Galileo::DB::Schema::Result::Page: Page
Galileo::DB::Schema::Result::User: User
source_registrations:
Menu: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
list:
data_type: TEXT
menu_id:
data_type: INT
is_auto_increment: 1
name:
data_type: VARCHAR
size: 255
_columns_info_loaded: 0
lib/Galileo/files/sql/_source/deploy/2/001-auto.yml view on Meta::CPAN
- name
- list
_primaries: &2
- menu_id
_relationships: {}
_unique_constraints:
menus_name:
- name
primary: *2
name: menus
result_class: Galileo::DB::Schema::Result::Menu
resultset_attributes: {}
resultset_class: DBIx::Class::ResultSet
schema: *1
source_name: Menu
Page: !!perl/hash:DBIx::Class::ResultSource::Table
_columns:
author_id:
data_type: INT
html:
data_type: TEXT
md:
data_type: TEXT
name:
data_type: VARCHAR
lib/Galileo/files/sql/_source/deploy/2/001-auto.yml view on Meta::CPAN
- handler: _where_op_VALUE
regex: !!perl/regexp (?^ix:^ value $)
- *7
- *8
_sql_maker_opts: {}
savepoints: []
schema: *1
transaction_depth: 0
sources:
- User
- Menu
- Page
parser_type: SQL::Translator::Parser::DBIx::Class
producer_args: {}
producer_type: SQL::Translator::Producer::YAML
show_warnings: 0
trace: 0
version: 0.11012
lib/Galileo/files/templates/nav_menu.html.ep view on Meta::CPAN
%= memorize main => begin
% my $menu = schema->resultset('Menu')->single({name => 'main'});
% my @pages = @{ Mojo::JSON::decode_json($menu->list) };
% my $rs = schema->resultset('Page');
<div class="well" id="nav_menu" style="padding: 8px 0;">
<ul id="main" class="nav nav-list">
<li class="nav-header">Navigation</li>
<li><a href="/">Home</a></li>
% for my $id (@pages) {
% my $page = $rs->single({page_id => $id});
% next unless $page;
<li>
lib/Galileo/files/templates/user_menu.html.ep view on Meta::CPAN
% if (my $user = session 'username') {
<div class="well" style="padding: 8px 0;">
<ul class="nav nav-list" id="user-menu">
<li class="nav-header">Hello <%== $user %></li>
% if ( is_author($user) && current_route 'show_page' ) {
<li><a href="#" onclick="add_page()">Add New Page</a></li>
<li><a href="<%= url_for 'edit_page', name => stash('name') %>">Edit This Page</a></li>
% }
<li><a href="/admin/menu">Edit Nav Menu</a></li>
<li><a href="/logout">Log Out</a></li>
% if ( is_admin $user ) {
<li class="nav-header">Administration</li>
<li><a href="#" onclick="add_user()">Add New User</a></li>
<li><a href="/admin/users">All Users</a></li>
<li><a href="/admin/pages">All Pages</a></li>
% }
</ul>
</div>
->finish_ok;
# see that the changes are reflected
$t->get_ok('/page/snowâflake')
->status_is(200)
->text_is( h1 => 'New Home for â' )
->text_like( '#content p' => qr/$text/ );
};
subtest 'Edit Main Navigation Menu' => sub {
my $title = 'About Galileo';
# check about page is in nav
$t->get_ok('/admin/menu')
->status_is(200)
->$trimmed_text_is( 'ul#main > li:nth-of-type(4) > a' => $title )
->text_is( '#list-active-pages > #pages-2 > span' => $title );
# remove about page from list
my $data = {