Get a list of supported sites to crosspost to, instead of a list of all 
external sites.

        Patch by kareila. 

diffs (53 lines):

diff -r 5fc9fcab5cc5 -r 77110236993c cgi-bin/DW/External/Site.pm
--- a/cgi-bin/DW/External/Site.pm       Fri Jul 02 01:14:37 2010 +0800
+++ b/cgi-bin/DW/External/Site.pm       Fri Jul 02 14:21:44 2010 +0800
@@ -20,14 +20,10 @@ package DW::External::Site;
 
 use strict;
 use Carp qw/ croak /;
-use DW::External::Site::InsaneJournal;
-use DW::External::Site::LiveJournal;
-use DW::External::Site::JournalFen;
-use DW::External::Site::Inksome;
-use DW::External::Site::DeadJournal;
-use DW::External::Site::Dreamwidth;
-use DW::External::Site::ArchiveofOurOwn;
-use DW::External::Site::Unknown;
+use DW::External::XPostProtocol;
+
+use LJ::ModuleLoader;
+LJ::ModuleLoader->require_subclasses( "DW::External::Site" );
 
 my %domaintosite;
 my %idtosite;
@@ -83,11 +79,14 @@ sub get_site {
 }
 
 
-# returns a list of all supported sites
-sub get_sites {
-    my ($class) = @_;
+# returns a list of all supported sites for linking
+sub get_sites { return values %domaintosite; }
 
-    return values %domaintosite;
+# returns a list of all supported sites for crossposting
+sub get_xpost_sites {
+    my %protocols = DW::External::XPostProtocol->get_all_protocols;
+    return grep { exists $protocols{ $_->{servicetype} } }
+           values %domaintosite;
 }
 
 # returns the appropriate site by site_id
diff -r 5fc9fcab5cc5 -r 77110236993c htdocs/manage/externalaccount.bml
--- a/htdocs/manage/externalaccount.bml Fri Jul 02 01:14:37 2010 +0800
+++ b/htdocs/manage/externalaccount.bml Fri Jul 02 14:21:44 2010 +0800
@@ -77,7 +77,7 @@ use strict;
     }
 
     my @sitevalues;
-    my @sites = DW::External::Site->get_sites;
+    my @sites = DW::External::Site->get_xpost_sites;
 
     foreach my $site (sort { $a->{sitename} cmp $b->{sitename} } @sites) {
         push @sitevalues, $site->{siteid},  $site->{sitename};
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to