From 4e821611c46b479ccd86d43a4318a51a4f8dc50c Mon Sep 17 00:00:00 2001 From: Taku Amano Date: Sun, 15 Feb 2009 19:01:42 +0900 Subject: [PATCH] initial version --- Build.PL | 119 +++++++++++++++++++++++++++++++++++++++++++ LICENSE | 21 ++++++++ MANIFEST | 8 +++ MANIFEST.SKIP | 47 +++++++++++++++++ config.yaml | 50 ++++++++++++++++++ lib/Lovers/App.pm | 130 +++++++++++++++++++++++++++++++++++++++++++++++ lib/Lovers/L10N.pm | 25 +++++++++ lib/Lovers/L10N/en_us.pm | 29 +++++++++++ lib/Lovers/L10N/ja.pm | 32 ++++++++++++ static/icon/heat.gif | Bin 0 -> 85 bytes static/icon/mail.gif | Bin 0 -> 83 bytes 11 files changed, 461 insertions(+) create mode 100644 Build.PL create mode 100644 LICENSE create mode 100644 MANIFEST create mode 100644 MANIFEST.SKIP create mode 100644 config.yaml create mode 100644 lib/Lovers/App.pm create mode 100644 lib/Lovers/L10N.pm create mode 100644 lib/Lovers/L10N/en_us.pm create mode 100644 lib/Lovers/L10N/ja.pm create mode 100644 static/icon/heat.gif create mode 100644 static/icon/mail.gif diff --git a/Build.PL b/Build.PL new file mode 100644 index 0000000..cad1022 --- /dev/null +++ b/Build.PL @@ -0,0 +1,119 @@ +use strict; +use warnings; +use Module::Build; +use File::Spec; +use File::Basename; +use YAML qw/ Load /; + +my $class = Module::Build->subclass( + class => 'MTToiplanPluginDirectoryBuilder', + code => q{ + # Don't make blib + # sub ACTION_code {}; + # Don't make blib + sub ACTION_docs {}; + # Don't make META.yml + sub ACTION_distmeta { + # no warning on ACTION_distdir + $_[0]->{metafile} = 'MANIFEST'; + }; + # Don't add MEATA.yml to MANIFEST + sub ACTION_manifest { + $_[0]->{metafile} = 'MANIFEST', + $_[0]->SUPER::ACTION_manifest(@_); + }; + sub ACTION_test { + my $p = $_[0]->{properties}; + unshift( + @INC, + File::Spec->catdir($p->{base_dir}, 'extlib'), + File::Spec->catdir($p->{base_dir}, '../../lib'), + File::Spec->catdir($p->{base_dir}, '../../extlib'), + ); + + $_[0]->SUPER::ACTION_test(@_); + }; + sub ACTION_upload_google { + my ($self) = @_; + my $prj = 'toiplan-mtplugin-directory'; + my $ver = $self->dist_version; + my $dist_dir = $self->dist_dir; + my $name = $self->dist_name; + + $self->depends_on('dist'); + #$self->_call_action('distdir'); + $self->ACTION_distdir; + $self->depends_on('zipdist'); + system( + "googlecode_upload.py -s 'Release $ver (TGZ)' -p $prj -l $name $dist_dir.tar.gz" + ); + system( + "googlecode_upload.py -s 'Release $ver (ZIP)' -p $prj -l $name $dist_dir.zip" + ); + unlink("$dist_dir.tar.gz"); + unlink("$dist_dir.zip"); + }; + + sub ACTION_zipdist { + my ($self) = @_; + my $dist_dir = $self->dist_dir; + $self->depends_on('distdir'); + print "Creating $dist_dir.zip\n"; + system("zip -r $dist_dir.zip $dist_dir") == 0 or die $?; + $self->delete_filetree($dist_dir); + } + + sub ACTION_distdir { + my ($self) = @_; + + $_[0]->SUPER::ACTION_distdir(@_); + + my $dist_dir = $self->dist_dir; + rename($dist_dir, $self->{properties}{dist_name}); + use File::Path; + use File::Spec; + use File::Basename; + my $plugins = File::Spec->catfile($dist_dir, 'plugins'); + mkpath($plugins, 1, 0755); + + my $static = File::Spec->catfile($dist_dir, 'mt-static/plugins'); + mkpath($static, 1, 0755); + + my $new_dist_dir = File::Spec->catfile( + $plugins, $self->{properties}{dist_name} + ); + rename($self->{properties}{dist_name}, $new_dist_dir); + + foreach my $f (glob(File::Spec->catfile($new_dist_dir, 'LIC*'))) { + rename($f, File::Spec->catfile($dist_dir, basename($f))); + } + + if (my @statics = glob(File::Spec->catfile($new_dist_dir, 'static/*'))) { + my $d = File::Spec->catfile($static, $self->{properties}{dist_name}); + mkpath($d, 1, 0755); + foreach my $f (@statics) { + rename($f, File::Spec->catfile($d, basename($f))); + } + } + } + } +); + +my $yaml_string = do { + open(my $fh, File::Spec->catfile(dirname(__FILE__), 'config.yaml')); + local $/; + <$fh> +}; +$yaml_string =~ s/^(\s*)\*/$1App::\*/gm; +my $yaml = Load($yaml_string); + +my $builder = $class->new( + dist_name => $yaml->{name}, + dist_author => 'Movable Type ACME Plugin Project', + dist_version => $yaml->{version}, + module_name => $yaml->{name} . '::App', + license => 'MIT License', + add_to_cleanup => [ $yaml->{name} . '-*' ], +); + +$builder->create_build_script(); diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..39d782a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +Lovers - Provide Movable Type functions for lovers. + +Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..00e2443 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,8 @@ +config.yaml +lib/Lovers/App.pm +lib/Lovers/L10N.pm +lib/Lovers/L10N/en_us.pm +lib/Lovers/L10N/ja.pm +LICENSE +static/icon/heat.gif +static/icon/mail.gif diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP new file mode 100644 index 0000000..35d773d --- /dev/null +++ b/MANIFEST.SKIP @@ -0,0 +1,47 @@ +^MANIFEST +\bBuild.PL$ +#^Makefile +#^META.yml$ +#^blib/ +#~$ + + +# Avoid version control files. +\bRCS\b +\bCVS\b +,v$ +\B\.svn\b +\B\.cvsignore$ + +# Avoid Makemaker generated and utility files. +\bMakefile$ +\bblib +\bMakeMaker-\d +\bpm_to_blib$ +\bblibdirs$ +^MANIFEST\.SKIP$ + +# Avoid Module::Build generated and utility files. +\bBuild$ +\bBuild.bat$ +\b_build + +# Avoid Devel::Cover generated files +\bcover_db + +# Avoid temp and backup files. +~$ +\.tmp$ +\.old$ +\.bak$ +\#$ +\.# +\.rej$ + +# Avoid OS-specific files/dirs +# Mac OSX metadata +\B\.DS_Store +# Mac OSX SMB mount metadata files +\B\._ +# Avoid archives of this distribution +\bArchiveUploader-[\d\.\_]+ diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..b91f6fc --- /dev/null +++ b/config.yaml @@ -0,0 +1,50 @@ +# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# plugin name +name: Lovers +version: 0.0.1 + +# about this plugin +description: <__trans phrase="Provide Movable Type functions for lovers."> +author_name: <__trans phrase="Movable Type ACME Plugin Project"> +author_link: http://mt-acme.sourceforge.jp/ +plugin_link: http://mt-acme.sourceforge.jp/lovers/ +doc_link: http://mt-acme.sourceforge.jp/lovers/ + +#Localization +l10n_class: Lovers::L10N + +#tag +tags: + help_url: http://mt-acme.sourceforge.jp/lovers/tags#%t + block: + LoversPopularWith: Lovers::App::_hdlr_popular_with + Mote: Lovers::App::_hdlr_popular_with + +callbacks: + MT::App::CMS::template_source.rebuilding: Lovers::App::source_rebuilding + *::pre_build: Lovers::App::pre_build + *::post_build: Lovers::App::post_build + +applications: + cms: + methods: + lovers_icon: Lovers::App::icon diff --git a/lib/Lovers/App.pm b/lib/Lovers/App.pm new file mode 100644 index 0000000..4242bb4 --- /dev/null +++ b/lib/Lovers/App.pm @@ -0,0 +1,130 @@ +# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +package Lovers::App; +use strict; + +sub _hdlr_popular_with { + my($ctx, $args, $cond) = @_; + my $app = MT->instance; + my $plugin = MT->component('Lovers'); + + my $res = ''; + my $builder = $ctx->stash('builder'); + my $tokens = $ctx->stash('tokens'); + + defined($res = $builder->build($ctx, $tokens, $cond)) + or return $ctx->error( $builder->errstr ); + + $app->session( + 'lovers_message', + $res || $plugin->translate('My heart begins to throb...') + ); + $app->session('lovers_type', $args->{'type'} || ''); +} + +sub source_rebuilding { + my ($cb, $app, $tmpl) = @_; + my $plugin = $app->component('Lovers'); + my $blog_id = $app->param('blog_id'); + my ($old, $new); + + if (my $text = $app->param('text')) { + if ($text =~ m/]*)>(.*)<\/mt:?mote>/is) { + $app->session('lovers_message', $2); + + my $args = $1; + $args =~ m/type\s*=\s*"?(\w+)/is; + $app->session('lovers_type', $1 || ''); + } + } + + my $msg = $app->session('lovers_message'); + my $type = $app->session('lovers_type') || 'heat'; + + if (! $msg) { + return; + } + + my $uri = $app->static_path . 'plugins/Lovers/icon/' . $type . '.gif'; + + if ($type eq 'persistent') { + $new = <<__EOF__; + +__EOF__ + } + else { + $new = <<__EOF__; + +__EOF__ + } + $old = ''; + $$tmpl =~ s/($old)/$new\n$1/; + + $old = '\s+<__trans phrase="Publishing.*'; + $new = $msg; + + if ($type eq 'persistent') { + require MT::Util; + $new = + ''; + } + else { + $new =~ s/^\s*|\s*$//gs; + $new =~ s/\r?\n/
/g; + $new =~ s/([\w._-~]+@[\w._-~]+)/$1<\/a>/; + } + + $$tmpl =~ s/($old)/$new/g; +} + +sub pre_build { + my ($cb) = @_; +} + +sub post_build { + my ($cb) = @_; + + my $app = MT->instance; + my $msg = $app->session('lovers_message', ''); + my $type = $app->session('lovers_type', ''); +} + +1; diff --git a/lib/Lovers/L10N.pm b/lib/Lovers/L10N.pm new file mode 100644 index 0000000..ae8cf36 --- /dev/null +++ b/lib/Lovers/L10N.pm @@ -0,0 +1,25 @@ +# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +package Lovers::L10N; +use strict; +use base 'MT::Plugin::L10N'; + +1; diff --git a/lib/Lovers/L10N/en_us.pm b/lib/Lovers/L10N/en_us.pm new file mode 100644 index 0000000..f67bffa --- /dev/null +++ b/lib/Lovers/L10N/en_us.pm @@ -0,0 +1,29 @@ +# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +package Lovers::L10N::en_us; + +use strict; + +use base 'Lovers::L10N'; +use vars qw( %Lexicon ); +%Lexicon = (); + +1; diff --git a/lib/Lovers/L10N/ja.pm b/lib/Lovers/L10N/ja.pm new file mode 100644 index 0000000..a239faf --- /dev/null +++ b/lib/Lovers/L10N/ja.pm @@ -0,0 +1,32 @@ +# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +package Lovers::L10N::ja; + +use strict; +use base 'Lovers::L10N::en_us'; +use vars qw( %Lexicon ); + +%Lexicon = ( + 'Provide Movable Type functions for lovers.' => '心と心の交流を促進します', + 'My heart begins to throb...' => 'ドキドキしています', +); + +1; diff --git a/static/icon/heat.gif b/static/icon/heat.gif new file mode 100644 index 0000000000000000000000000000000000000000..35b1b9159b247fcabfe3a61462761a605ddbaefa GIT binary patch literal 85 zcmZ?wbhEHbynL(nW!|<&96kIDB}%Vaa<=U4RMpN{%TsYqoWU9Zh%Ow= literal 0 HcmV?d00001 diff --git a/static/icon/mail.gif b/static/icon/mail.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebdda392064ce2f1cda18ed215d194a652ed65b2 GIT binary patch literal 83 zcmZ?wbhEHbzoiahODEG34cv5KTi#FpE!9%XwGh@O`ETL>wV11U=08iX(0jt literal 0 HcmV?d00001 -- 2.11.0