Skip to content

Commit

Permalink
[#975 state:resolved] Updating Theme Manager to v0.10.23 (from v0.10.…
Browse files Browse the repository at this point in the history
  • Loading branch information
jayallen committed Jul 11, 2011
1 parent d94b55a commit fa102c0
Show file tree
Hide file tree
Showing 8 changed files with 355 additions and 159 deletions.
2 changes: 1 addition & 1 deletion addons/ThemeManager.plugin/config.yaml
Expand Up @@ -4,7 +4,7 @@ key: ThemeManager
author_link: http://endevver.com/
author_name: Endevver
description: 'A comprehensive theme management plugin!'
version: 0.10.15
version: 0.10.23
schema_version: 7
static_version: 7
l10n_class: ThemeManager::L10N
Expand Down
159 changes: 98 additions & 61 deletions addons/ThemeManager.plugin/extlib/String/CRC/Cksum.pm
Expand Up @@ -8,143 +8,180 @@ use Carp;
use integer;

require Exporter;
our @ISA = qw(Exporter);
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(cksum);
our @EXPORT = qw();
our $VERSION = '0.91';
our @EXPORT = qw();
our $VERSION = '0.91';

use fields qw(cksum size);

my @crctab = (
0x00000000,
0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011,
0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49,
0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e,
0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686,
0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47,
0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f,
0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088,
0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0,
0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
);


sub new {
my $class = shift;
my String::CRC::Cksum $self = fields::new(ref $class || $class);
my String::CRC::Cksum $self = fields::new( ref $class || $class );
return $self->reset;
} # new
} # new


sub reset {
my String::CRC::Cksum $self = shift;
$self->{cksum} = $self->{size} = 0;
return $self;
} # reset
} # reset


sub add {
my String::CRC::Cksum $self = shift;
my $cksum = $self->{cksum};
my $size = $self->{size};
my $cksum = $self->{cksum};
my $size = $self->{size};

while(@_) {
while (@_) {
my $n = length $_[0];

for(my $i = 0; $i < $n; ++$i) {
for ( my $i = 0; $i < $n; ++$i ) {
my $c = unpack 'C', substr $_[0], $i, 1;
$cksum = (0xFFFFFFFF & ($cksum << 8)) ^ $crctab[(0xFF & ($cksum >> 24)) ^ $c];
$cksum = ( 0xFFFFFFFF & ( $cksum << 8 ) )
^ $crctab[ ( 0xFF & ( $cksum >> 24 ) ) ^ $c ];
++$size;
}

}
continue { shift }
continue {shift}

$self->{cksum} = $cksum;
$self->{size} = $size;
$self->{size} = $size;

return $self;
} # add
} # add


sub addfile {
my String::CRC::Cksum $self = shift;
my $stat;

local $_;
while(my $ifd = shift) {
while ( my $ifd = shift ) {
$self->add($_) while $stat = read $ifd, $_, 4096;

if(! defined $stat) {
if ( !defined $stat ) {
croak "error reading from filehandle: $!";
}
}

return $self;
} # addfile
} # addfile


sub peek {
my String::CRC::Cksum $self = shift;
my $cksum = $self->{cksum};
my $size = $self->{size};
my $cksum = $self->{cksum};
my $size = $self->{size};

# Extend with the length of the data
while($size != 0) {
while ( $size != 0 ) {
my $c = $size & 0xFF;
$size >>= 8;
$cksum = (0xFFFFFFFF & ($cksum << 8)) ^ $crctab[(0xFF & ($cksum >> 24)) ^ $c];
$cksum = ( 0xFFFFFFFF & ( $cksum << 8 ) )
^ $crctab[ ( 0xFF & ( $cksum >> 24 ) ) ^ $c ];
}
$cksum = ~ $cksum;
$cksum = ~$cksum;

# positivise the result even on a 32 bit processor
no integer;
my $crc = $cksum;
$crc += 4294967296 if $crc < 0;

return wantarray ? ($crc, $self->{size}) : $crc;
return wantarray ? ( $crc, $self->{size} ) : $crc;

} # addfile
} # addfile


sub result {
my String::CRC::Cksum $self = shift;
my ($cksum, $size) = $self->peek;
my ( $cksum, $size ) = $self->peek;
$self->reset;
return wantarray ? ($cksum, $size) : $cksum;
} # result
return wantarray ? ( $cksum, $size ) : $cksum;
} # result


sub cksum(@) {
my $sum = String::CRC::Cksum->new;

while(@_) {
if(ref $_[0])
{ $sum->addfile($_[0]) }
else
{ $sum->add($_[0]) }
while (@_) {
if ( ref $_[0] ) { $sum->addfile( $_[0] ) }
else { $sum->add( $_[0] ) }
}
continue { shift }
continue {shift}

return $sum->result;
} # cksum
} # cksum

1;

Expand Down
Expand Up @@ -10,7 +10,7 @@ use MT;
sub widget {
return {
theme_manager => {
label => 'Theme Dashboard Widget',
label => 'Theme Dashboard Widget',
handler => sub {
my ( $app, $tmpl, $param ) = @_;

Expand Down
60 changes: 46 additions & 14 deletions addons/ThemeManager.plugin/lib/ThemeManager/Plugin.pm
Expand Up @@ -92,7 +92,7 @@ sub update_page_actions {
list_templates => {
refresh_fields => {
label => "Refresh Custom Fields",
order => 1010,
order => 1,
permission => 'edit_templates',
condition => sub {
MT->component('Commercial') && MT->app->blog;
Expand All @@ -107,6 +107,22 @@ sub update_page_actions {
$app->call_return;
},
},
refresh_fd_fields => {
label => "Refresh Field Day fields",
order => 2,
permission => 'edit_templates',
condition => sub {
MT->component('FieldDay') && MT->app->blog;
},
code => sub {
my ($app) = @_;
$app->validate_magic or return;
my $blog = $app->blog;
ThemeManager::TemplateInstall::_refresh_fd_fields($blog);
$app->add_return_arg( fd_fields_refreshed => 1 );
$app->call_return;
},
},
},
theme_dashboard => {
theme_options => {
Expand Down Expand Up @@ -197,7 +213,7 @@ sub theme_dashboard {

# Turn that YAML into a plain old string and save it.
$blog->theme_meta( $yaml->write_string() );

# Upgraders likely also don't have the theme_mode switch set
$blog->theme_mode('production');
$blog->save;
Expand Down Expand Up @@ -230,12 +246,10 @@ sub theme_dashboard {
= theme_docs( $theme_meta->{documentation}, $plugin );

# Grab the template set language, or fall back to the blog language.
# FIXME Below looks like an inadvertent error: You assign to a variable and never use it but instead continue using the $blog->template_set_language
my $template_set_language = $blog->template_set_language
|| $blog->language;
if ( $blog->language ne $blog->template_set_language ) {
$param->{template_set_language} = $blog->template_set_language;
}
$param->{template_set_language} = $template_set_language
if $blog->language ne $template_set_language;

my $dest_path = theme_thumb_path();
if ( -w $dest_path ) {
Expand Down Expand Up @@ -267,6 +281,7 @@ sub theme_dashboard {
$param->{template_page_actions} = $app->page_actions('list_templates');

$param->{custom_fields_refreshed} = $q->param('custom_fields_refreshed');
$param->{fd_fields_refreshed} = $q->param('fd_fields_refreshed');

my $tmpl = $tm->load_tmpl('theme_dashboard.mtml');
return $app->listing( {
Expand Down Expand Up @@ -467,7 +482,6 @@ sub setup_theme {
# Production Mode or Designer Mode.
$param->{theme_mode} = $q->param('theme_mode');
if ( $q->param('theme_mode') ) {

# Save the theme mode selection
foreach my $blog_id (@blog_ids) {
my $blog = MT->model('blog')->load($blog_id);
Expand All @@ -476,7 +490,6 @@ sub setup_theme {
}
}
else {

# The desired theme mode hasn't been selected yet.
return $app->load_tmpl( 'theme_mode.mtml', $param );
}
Expand Down Expand Up @@ -607,7 +620,6 @@ sub setup_theme {
return $app->load_tmpl( 'select_language.mtml', $param );
} ## end if ( !$q->param('language'...))
else {

# Either a language has been set, or there is only one language: english.
my $selected_lang
= $q->param('language') ? $q->param('language') : $languages[0];
Expand Down Expand Up @@ -1351,12 +1363,32 @@ sub _populate_list_templates_context {
type => 'custom',
order => 300,
},
'system' => {
label => $tm->translate("System Templates"),
type => [ keys %$sys_tmpl ],
order => 400,
},
);

# If any email templates are part of this theme, display them under
# an "Email Templates" template area. Only show this area if a
# theme requires it, because email templates can't be manually
# created anyway.
if ( MT->registry('template_sets', $set, 'templates', 'email') ) {
$types{'email'} = {
label => $tm->translate("Email Templates"),
type => 'email',
order => 400,
};
}

# If any system templates are part of this theme, display them
# under a "System Templates" template area. Only show this area if
# a theme requires it, because system templates can't be manually
# created anyway.
if ( MT->registry('template_sets', $set, 'templates', 'system') ) {
$types{'system'} = {
label => $tm->translate("System Templates"),
type => [ keys %$sys_tmpl ],
order => 401,
};
}

} ## end if ($blog)
else {

Expand Down

0 comments on commit fa102c0

Please sign in to comment.