/lib/MT/Folder.pm

http://github.com/openmelody/melody · Perl · 105 lines · 79 code · 21 blank · 5 comment · 8 complexity · 71fd7c9dc3be458534fc4ce102c7f894 MD5 · raw file

  1. # Movable Type (r) Open Source (C) 2001-2010 Six Apart, Ltd.
  2. # This program is distributed under the terms of the
  3. # GNU General Public License, version 2.
  4. #
  5. # $Id$
  6. package MT::Folder;
  7. use strict;
  8. use base qw( MT::Category );
  9. __PACKAGE__->install_properties( {
  10. class_type => 'folder',
  11. child_of => 'MT::Blog',
  12. child_classes => [ 'MT::Placement', 'MT::FileInfo' ],
  13. }
  14. );
  15. sub class_label {
  16. return MT->translate("Folder");
  17. }
  18. sub class_label_plural {
  19. MT->translate("Folders");
  20. }
  21. sub contents_label {
  22. MT->translate("Page");
  23. }
  24. sub contents_label_plural {
  25. MT->translate("Pages");
  26. }
  27. sub list_props {
  28. return {
  29. parent => { base => 'category.parent', },
  30. entry_count => { base => 'category.entry_count', },
  31. custom_sort => { class => 'folder', base => 'category.custom_sort', },
  32. };
  33. }
  34. sub basename_prefix {
  35. "folder";
  36. }
  37. sub remove {
  38. my $folder = shift;
  39. my $delete_files_at_rebuild = MT->config('DeleteFilesAtRebuild');
  40. my $rebuild_at_delete = MT->config('RebuildAtDelete');
  41. my @moving_pages;
  42. if ( ref $folder && $rebuild_at_delete && $delete_files_at_rebuild ) {
  43. my $search_pages;
  44. $search_pages = sub {
  45. my $folder = shift;
  46. my $join =
  47. MT::Placement->join_on( 'entry_id',
  48. { category_id => $folder->id, },
  49. { unique => 1 },
  50. );
  51. push @moving_pages,
  52. MT->model('page')->load( undef, { join => $join } );
  53. my @children = $folder->children_categories;
  54. for my $child (@children) {
  55. $search_pages->($child);
  56. }
  57. };
  58. $search_pages->($folder);
  59. require MT::WeblogPublisher;
  60. for my $page (@moving_pages) {
  61. MT::WeblogPublisher->remove_entry_archive_file(
  62. Entry => $page,
  63. ArchiveType => 'Page',
  64. );
  65. }
  66. } ## end if ( ref $folder && $rebuild_at_delete...)
  67. $folder->SUPER::remove(@_) or return $folder->errstr;
  68. if ( ref $folder && $rebuild_at_delete ) {
  69. for my $page (@moving_pages) {
  70. $page->clear_cache();
  71. MT->rebuild_entry( Entry => $page );
  72. }
  73. }
  74. 1;
  75. } ## end sub remove
  76. 1;
  77. __END__
  78. =head1 NAME
  79. MT::Folder
  80. =head1 METHODS
  81. TODO
  82. =head1 AUTHOR & COPYRIGHT
  83. Please see L<MT/AUTHOR & COPYRIGHT>.
  84. =cut