allow metadata when creating a new article
authorTony Cook <tony@develop-help.com>
Sun, 1 Feb 2015 05:42:05 +0000 (16:42 +1100)
committerTony Cook <tony@develop-help.com>
Sat, 9 May 2015 04:09:30 +0000 (14:09 +1000)
site/cgi-bin/modules/BSE/DummyArticle.pm
site/cgi-bin/modules/BSE/Edit/Article.pm
site/templates/admin/edit_1.tmpl

index 25b53c6..82c31ce 100644 (file)
@@ -3,8 +3,11 @@ use strict;
 use base 'BSE::TB::SiteCommon';
 use base 'BSE::FormatterBase';
 use BSE::TB::Articles;
+use BSE::MetaOwnerBase;
 
-our $VERSION = "1.005";
+our @ISA = qw(BSE::MetaOwnerBase);
+
+our $VERSION = "1.006";
 
 sub images {
   return;
@@ -52,8 +55,38 @@ sub should_index {
   1;
 }
 
+sub tags {
+  ();
+}
+
 sub has_tags {
   0;
 }
 
+sub meta_owner_type {
+  'bse_article';
+}
+
+sub meta_meta_cfg_section {
+  "global article metadata";
+}
+
+sub meta_meta_cfg_prefix {
+  "article metadata";
+}
+
+sub metafields {
+  my ($self, $cfg) = @_;
+
+  $cfg ||= BSE::Cfg->single;
+
+  my %metanames = map { $_ => 1 } $self->metanames;
+
+  require BSE::ArticleMetaMeta;
+  my @fields = grep $metanames{$_->name} || $_->cond($self), BSE::ArticleMetaMeta->all_metametadata($cfg);
+
+  return ( @fields );
+}
+
+
 1;
index ad0545c..3fcc4ab 100644 (file)
@@ -16,7 +16,7 @@ use List::Util qw(first);
 use constant MAX_FILE_DISPLAYNAME_LENGTH => 255;
 use constant ARTICLE_CUSTOM_FIELDS_CFG => "article custom fields";
 
-our $VERSION = "1.052";
+our $VERSION = "1.053";
 
 =head1 NAME
 
@@ -1557,7 +1557,8 @@ sub _dummy_article {
     return;
   }
 
-  return \%article;
+  require BSE::DummyArticle;
+  return bless \%article, "BSE::DummyArticle";
 }
 
 sub add_form {
@@ -1813,6 +1814,12 @@ sub save_new {
     $self->_validate_tags(\@tags, \%errors);
   }
 
+  my $meta;
+  if ($cgi->param("_save_meta")) {
+    require BSE::ArticleMetaMeta;
+    $meta = BSE::ArticleMetaMeta->retrieve($req, $article, \%errors);
+  }
+
   if (keys %errors) {
     if ($req->is_ajax) {
       return $req->json_content
@@ -1966,6 +1973,10 @@ sub save_new {
     $article->set_tags([ grep /\S/, @tags ], \$error);
   }
 
+  if ($meta) {
+    BSE::ArticleMetaMeta->save($article, $meta);
+  }
+
   generate_article($articles, $article) if $Constants::AUTO_GENERATE;
 
   if ($req->is_ajax) {
index fa81838..1511eee 100644 (file)
           </tr>
           <:or Article:><:eif Article:> 
         </table>
-<:.if !ifnew -:>
 <:.set metas = [ article.metafields ] -:>
 <:  .if metas.size -:>
 <fieldset>
 <:  .end for -:>
 </fieldset>
 <:  .end if -:>
-<:.end if -:>
 
   <p><: ifNew :>
     <input type="submit" name="save" value="Add New <: articleType:>" />