2010-09-24 01:08:03 -04:00
NEWSBLUR . ReaderFeedchooser = function ( options ) {
var defaults = { } ;
2010-10-15 18:38:49 -04:00
2010-09-24 01:08:03 -04:00
this . options = $ . extend ( { } , defaults , options ) ;
this . model = NEWSBLUR . AssetModel . reader ( ) ;
this . runner ( ) ;
} ;
NEWSBLUR . ReaderFeedchooser . prototype = {
runner : function ( ) {
2010-09-29 09:49:34 -04:00
this . start = new Date ( ) ;
2010-10-16 22:42:59 -04:00
this . MAX _FEEDS = 64 ;
2010-09-24 01:08:03 -04:00
this . approve _list = [ ] ;
this . make _modal ( ) ;
2010-10-16 18:52:52 -04:00
this . make _paypal _button ( ) ;
2010-10-15 18:38:49 -04:00
_ . defer ( _ . bind ( function ( ) { this . open _modal ( ) ; } , this ) ) ;
2010-09-29 09:49:34 -04:00
this . find _feeds _in _feed _list ( ) ;
2010-09-27 11:43:08 -04:00
this . initial _load _feeds ( ) ;
2011-03-02 17:58:12 -05:00
this . choose _dollar _amount ( 2 ) ;
2010-09-24 01:08:03 -04:00
2010-10-14 09:51:56 -04:00
this . flags = {
'has_saved' : false
} ;
2010-09-24 01:08:03 -04:00
this . $modal . bind ( 'mousedown' , $ . rescope ( this . handle _click , this ) ) ;
} ,
make _modal : function ( ) {
var self = this ;
this . $modal = $ . make ( 'div' , { className : 'NB-modal-feedchooser NB-modal' } , [
$ . make ( 'h2' , { className : 'NB-modal-title' } , 'Choose Your ' + this . MAX _FEEDS ) ,
2010-10-02 17:05:55 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-type' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-info' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-info-type' } , [
$ . make ( 'span' , { className : 'NB-feedchooser-subtitle-type-prefix' } , 'Free' ) ,
' Standard Account'
] ) ,
2012-02-29 12:15:01 -08:00
$ . make ( 'h2' , { className : 'NB-modal-subtitle' } , [
$ . make ( 'b' , [
2012-02-29 15:08:23 -08:00
'You can follow up to ' + this . MAX _FEEDS + ' sites.'
2012-02-29 12:15:01 -08:00
] ) ,
2012-02-29 15:08:23 -08:00
$ . make ( 'br' ) ,
2012-02-29 12:15:01 -08:00
'You can always change these.'
] ) ,
2010-10-02 17:05:55 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-info-counts' } ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-info-sort' } , 'Auto-Selected By Popularity' )
] ) ,
this . make _feeds ( ) ,
$ . make ( 'form' , { className : 'NB-feedchooser-form' } , [
$ . make ( 'div' , { className : 'NB-modal-submit' } , [
// $.make('div', { className: 'NB-modal-submit-or' }, 'or'),
2010-12-23 14:18:40 -05:00
$ . make ( 'input' , { type : 'submit' , disabled : 'true' , className : 'NB-disabled NB-modal-submit-save NB-modal-submit-green' , value : 'Check what you like above...' } ) ,
$ . make ( 'input' , { type : 'submit' , className : 'NB-modal-submit-add NB-modal-submit-green' , value : 'First, add sites' } )
2010-10-02 17:05:55 -04:00
] )
2010-10-15 09:21:46 -04:00
] ) . bind ( 'submit' , function ( e ) {
e . preventDefault ( ) ;
return false ;
} )
2010-09-24 01:08:03 -04:00
] ) ,
2010-10-02 17:05:55 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-type NB-last' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-info' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-info-type' } , [
$ . make ( 'span' , { className : 'NB-feedchooser-subtitle-type-prefix' } , 'Super-Mega' ) ,
2010-10-06 09:42:59 -04:00
' Premium Account'
2010-10-02 17:05:55 -04:00
] )
] ) ,
$ . make ( 'ul' , { className : 'NB-feedchooser-premium-bullets' } , [
2010-10-05 19:05:01 -04:00
$ . make ( 'li' , { className : 'NB-1' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2012-02-29 15:08:23 -08:00
'Sites are updated up to 10x more often.'
2010-10-02 17:05:55 -04:00
] ) ,
2010-10-05 19:05:01 -04:00
$ . make ( 'li' , { className : 'NB-2' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2011-12-20 08:55:55 -08:00
'Unlimited number of sites'
2010-10-05 19:05:01 -04:00
] ) ,
$ . make ( 'li' , { className : 'NB-3' } , [
2010-10-06 09:42:59 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2012-02-29 15:08:23 -08:00
'River of News (reading by folder).'
2010-10-06 09:42:59 -04:00
] ) ,
$ . make ( 'li' , { className : 'NB-4' } , [
2011-02-22 22:00:32 -05:00
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2011-12-20 08:55:55 -08:00
'Access to future premium-only features like searching, archives, and [top secret]'
2011-02-22 22:00:32 -05:00
] ) ,
$ . make ( 'li' , { className : 'NB-5' } , [
2010-10-05 19:05:01 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2011-12-20 08:55:55 -08:00
'You feed my poor, hungry dog for 6 days' ,
2010-10-05 19:05:01 -04:00
$ . make ( 'img' , { className : 'NB-feedchooser-premium-poor-hungry-dog' , src : NEWSBLUR . Globals . MEDIA _URL + '/img/reader/shiloh.jpg' } )
] ) ,
2011-02-22 22:00:32 -05:00
$ . make ( 'li' , { className : 'NB-6' } , [
2010-10-23 12:13:27 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2011-12-20 08:55:55 -08:00
'You are supporting an indie developer'
2010-10-23 12:13:27 -04:00
] ) ,
2011-02-22 22:00:32 -05:00
$ . make ( 'li' , { className : 'NB-7' } , [
2010-10-05 19:05:01 -04:00
$ . make ( 'div' , { className : 'NB-feedchooser-premium-bullet-image' } ) ,
2011-02-07 23:41:25 -05:00
'Choose how much you would like to pay.' ,
$ . make ( 'div' , { style : 'color: #490567' } , 'The only difference is happiness.' )
2010-09-24 01:08:03 -04:00
] )
2010-10-02 17:05:55 -04:00
] ) ,
2010-12-31 10:34:31 -05:00
$ . make ( 'div' , { className : 'NB-modal-submit NB-modal-submit-paypal' } , [
2010-10-16 19:43:18 -04:00
// this.make_google_checkout()
2010-12-31 10:34:31 -05:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar' } , [
2011-03-02 17:58:12 -05:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-value NB-1' } , [
2012-02-29 12:15:01 -08:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-month' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-image' } ) ,
'$12/year'
] ) ,
2011-09-30 18:02:48 -07:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-year' } , '($1/month)' )
2011-03-02 17:58:12 -05:00
] ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-value NB-2' } , [
2012-02-29 12:15:01 -08:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-month' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-image' } ) ,
'$24/year'
] ) ,
2011-09-30 18:02:48 -07:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-year' } , '($2/month)' )
2011-03-02 17:58:12 -05:00
] ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-value NB-3' } , [
2012-02-29 12:15:01 -08:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-month' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-image' } ) ,
'$36/year'
] ) ,
2011-09-30 18:02:48 -07:00
$ . make ( 'div' , { className : 'NB-feedchooser-dollar-year' } , '($3/month)' )
2011-02-07 23:41:25 -05:00
] )
2012-02-29 12:15:01 -08:00
] ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-processor' } , [
$ . make ( 'div' , { className : 'NB-feedchooser-paypal' } , [
$ . make ( 'img' , { src : NEWSBLUR . Globals . MEDIA _URL + '/img/reader/logo-paypal.png' , height : 30 } ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-paypal-form' } )
] ) ,
$ . make ( 'div' , { className : 'NB-feedchooser-stripe' } , [
$ . make ( 'div' , { className : 'NB-creditcards' } , [
$ . make ( 'img' , { src : "https://manage.stripe.com/img/credit_cards/visa.png" } ) ,
$ . make ( 'img' , { src : "https://manage.stripe.com/img/credit_cards/mastercard.png" } ) ,
$ . make ( 'img' , { src : "https://manage.stripe.com/img/credit_cards/amex.png" } ) ,
$ . make ( 'img' , { src : "https://manage.stripe.com/img/credit_cards/discover.png" } )
] ) ,
$ . make ( 'div' , {
className : "NB-stripe-button NB-modal-submit-button NB-modal-submit-green"
} , [
"Pay by" ,
$ . make ( 'br' ) ,
"Credit Card"
] )
2011-02-07 23:41:25 -05:00
] )
2010-12-31 10:34:31 -05:00
] )
2010-10-02 17:05:55 -04:00
] )
2010-09-28 18:53:57 -04:00
] )
2010-09-24 01:08:03 -04:00
] ) ;
} ,
2010-10-16 18:52:52 -04:00
make _paypal _button : function ( ) {
2011-02-07 23:41:25 -05:00
var self = this ;
2012-02-29 12:15:01 -08:00
var $paypal = $ ( '.NB-feedchooser-paypal-form' , this . $modal ) ;
2011-02-07 23:41:25 -05:00
$ . get ( '/profile/paypal_form' , function ( response ) {
$paypal . html ( response ) ;
2011-11-04 17:52:26 -07:00
self . choose _dollar _amount ( 2 ) ;
2011-02-07 23:41:25 -05:00
} ) ;
2010-10-16 18:52:52 -04:00
} ,
make _google _button : function ( ) {
var checkout = '<script type="text/javascript" src="https://images-na.ssl-images-amazon.com/images/G/01/cba/js/widget/widget.js"></script><form method=POST action="https://payments.amazon.com/checkout/A215TOHXICT770"><input type="hidden" name="order-input" value="type:cba-signed-order/sha1-hmac/1;order:PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48T3JkZXIgeG1sbnM9J2h0dHA6Ly9wYXltZW50cy5hbWF6b24uY29tL2NoZWNrb3V0LzIwMDgtMTEtMzAvJz48Q2FydD48SXRlbXM+PEl0ZW0+PE1lcmNoYW50SWQ+QTIxNVRPSFhJQ1Q3NzA8L01lcmNoYW50SWQ+PFRpdGxlPk5ld3NCbHVyIFByZW1pdW0gLSAxIFllYXI8L1RpdGxlPjxEZXNjcmlwdGlvbj5UaGFuayB5b3UsIHRoYW5rIHlvdSwgdGhhbmsgeW91ITwvRGVzY3JpcHRpb24+PFByaWNlPjxBbW91bnQ+MTI8L0Ftb3VudD48Q3VycmVuY3lDb2RlPlVTRDwvQ3VycmVuY3lDb2RlPjwvUHJpY2U+PFF1YW50aXR5PjE8L1F1YW50aXR5PjxGdWxmaWxsbWVudE5ldHdvcms+TUVSQ0hBTlQ8L0Z1bGZpbGxtZW50TmV0d29yaz48L0l0ZW0+PC9JdGVtcz48L0NhcnQ+PC9PcmRlcj4=;signature:Zfg83JluKTIhItevtaGpspjdbfQ="><input alt="Checkout with Amazon Payments" src="https://payments.amazon.com/gp/cba/button?ie=UTF8&color=tan&background=white&cartOwnerId=A215TOHXICT770&size=large" type="image"></form>' ;
2010-10-05 19:05:01 -04:00
var $checkout = $ ( checkout ) ;
return $checkout ;
} ,
2010-09-24 01:08:03 -04:00
make _feeds : function ( ) {
var feeds = this . model . feeds ;
2011-08-26 19:58:06 -07:00
this . feed _count = _ . size ( feeds ) ;
2010-09-24 01:08:03 -04:00
var $feeds = $ ( '#feed_list' ) . clone ( true ) . attr ( {
'id' : 'NB-feedchooser-feeds' ,
'class' : 'NB-feedlist NB-feedchooser unread_view_positive' ,
'style' : ''
} ) ;
2011-04-24 20:42:42 -04:00
if ( $feeds . data ( 'sortable' ) ) $feeds . data ( 'sortable' ) . disable ( ) ;
2010-09-24 01:08:03 -04:00
2010-09-28 18:53:57 -04:00
// Expand collapsed folders
2010-10-06 09:42:59 -04:00
$ ( '.folder' , $feeds ) . css ( {
2010-09-28 18:53:57 -04:00
'display' : 'block' ,
'opacity' : 1
} ) ;
2010-10-02 17:05:55 -04:00
// Pretend unfetched feeds are fine
$ ( '.NB-feed-unfetched' , $feeds ) . removeClass ( 'NB-feed-unfetched' ) ;
2010-09-24 01:08:03 -04:00
$ ( '.unread_count_positive' , $feeds ) . text ( 'On' ) ;
$ ( '.unread_count_negative' , $feeds ) . text ( 'Off' ) ;
2010-09-28 18:53:57 -04:00
2010-09-24 01:08:03 -04:00
return $feeds ;
} ,
2010-10-02 17:05:55 -04:00
resize _modal : function ( previous _height ) {
2010-10-17 17:25:10 -04:00
var height = this . $modal . height ( ) + 16 ;
2010-10-02 17:05:55 -04:00
var parent _height = this . $modal . parent ( ) . height ( ) ;
if ( height > parent _height && previous _height != height ) {
var chooser _height = $ ( '#NB-feedchooser-feeds' ) . height ( ) ;
var diff = Math . max ( 4 , height - parent _height ) ;
$ ( '#NB-feedchooser-feeds' ) . css ( { 'max-height' : chooser _height - diff } ) ;
_ . defer ( _ . bind ( function ( ) { this . resize _modal ( height ) ; } , this ) , 1 ) ;
}
} ,
2010-09-24 01:08:03 -04:00
open _modal : function ( ) {
var self = this ;
this . $modal . modal ( {
2011-03-31 09:25:48 -04:00
'minWidth' : 780 ,
'maxWidth' : 780 ,
2010-09-24 01:08:03 -04:00
'overlayClose' : true ,
'onOpen' : function ( dialog ) {
dialog . overlay . fadeIn ( 200 , function ( ) {
dialog . container . fadeIn ( 200 ) ;
2010-10-02 17:05:55 -04:00
dialog . data . fadeIn ( 200 , function ( ) {
_ . defer ( _ . bind ( self . resize _modal , self ) , 10 ) ;
} ) ;
2010-09-24 01:08:03 -04:00
} ) ;
} ,
'onShow' : function ( dialog ) {
$ ( '#simplemodal-container' ) . corner ( '6px' ) ;
} ,
2010-12-23 14:18:40 -05:00
'onClose' : function ( dialog , callback ) {
2010-10-14 09:51:56 -04:00
if ( ! self . flags [ 'has_saved' ] && ! NEWSBLUR . reader . flags [ 'has_chosen_feeds' ] ) {
NEWSBLUR . reader . show _feed _chooser _button ( ) ;
}
2010-09-24 01:08:03 -04:00
dialog . data . hide ( ) . empty ( ) . remove ( ) ;
dialog . container . hide ( ) . empty ( ) . remove ( ) ;
dialog . overlay . fadeOut ( 200 , function ( ) {
dialog . overlay . empty ( ) . remove ( ) ;
2010-12-23 14:18:40 -05:00
$ . modal . close ( callback ) ;
2010-09-24 01:08:03 -04:00
} ) ;
$ ( '.NB-modal-holder' ) . empty ( ) . remove ( ) ;
}
} ) ;
} ,
2010-09-29 09:49:34 -04:00
add _feed _to _decline : function ( feed _id , update ) {
2010-09-24 01:08:03 -04:00
this . approve _list = _ . without ( this . approve _list , feed _id ) ;
2010-09-29 09:49:34 -04:00
var $feed = this . $feeds [ feed _id ] ;
2010-09-24 01:08:03 -04:00
$feed . removeClass ( 'NB-feedchooser-approve' ) ;
$feed . addClass ( 'NB-feedchooser-decline' ) ;
2010-09-29 09:49:34 -04:00
if ( update ) {
this . update _counts ( ) ;
}
2010-09-24 01:08:03 -04:00
} ,
2010-09-29 09:49:34 -04:00
add _feed _to _approve : function ( feed _id , update ) {
2010-09-24 01:08:03 -04:00
if ( ! _ . contains ( this . approve _list , feed _id ) ) {
this . approve _list . push ( feed _id ) ;
2010-10-02 17:05:55 -04:00
}
var $feed = this . $feeds [ feed _id ] ;
$feed . removeClass ( 'NB-feedchooser-decline' ) ;
$feed . addClass ( 'NB-feedchooser-approve' ) ;
if ( update ) {
this . update _counts ( ) ;
2010-09-24 01:08:03 -04:00
}
} ,
2010-09-29 09:49:34 -04:00
find _feeds _in _feed _list : function ( ) {
2010-10-16 19:43:18 -04:00
var self = this ;
2010-09-24 01:08:03 -04:00
var $feed _list = $ ( '.NB-feedchooser' , this . $modal ) ;
2010-09-29 09:49:34 -04:00
var $feeds = { } ;
2010-09-24 01:08:03 -04:00
$ ( '.feed' , $feed _list ) . each ( function ( ) {
2011-03-31 09:25:48 -04:00
var feed _id = parseInt ( $ ( this ) . attr ( 'data-id' ) , 10 ) ;
2010-10-02 17:05:55 -04:00
if ( ! ( feed _id in $feeds ) ) {
2010-09-29 09:49:34 -04:00
$feeds [ feed _id ] = $ ( [ ] ) ;
2010-09-24 01:08:03 -04:00
}
2010-09-29 09:49:34 -04:00
$feeds [ feed _id ] . push ( $ ( this ) . get ( 0 ) ) ;
2010-09-24 01:08:03 -04:00
} ) ;
2010-10-16 19:43:18 -04:00
// Remove invalid feeds that only show up in the assetmodel.
// This occurs when a feed is still subscribed, but not in the user's folders.
var found _feeds = _ . uniq ( _ . keys ( $feeds ) ) . sort ( ) ;
var invalid _feeds = _ . each ( self . model . feeds , function ( feed _id ) {
if ( ! _ . contains ( found _feeds , feed _id ) ) {
delete self . model . feeds [ feed _id ] ;
}
} ) ;
2010-09-24 01:08:03 -04:00
2010-09-29 09:49:34 -04:00
this . $feeds = $feeds ;
2010-09-24 01:08:03 -04:00
} ,
update _counts : function ( ) {
var $count = $ ( '.NB-feedchooser-info-counts' ) ;
var approved = this . approve _list . length ;
2010-09-27 11:43:08 -04:00
var $submit = $ ( '.NB-modal-submit-save' , this . $modal ) ;
var difference = approved - this . MAX _FEEDS ;
2010-09-24 01:08:03 -04:00
2011-08-26 19:58:06 -07:00
$count . text ( approved + '/' + Inflector . commas ( this . feed _count ) ) ;
2010-09-24 01:08:03 -04:00
$count . toggleClass ( 'NB-full' , approved == this . MAX _FEEDS ) ;
$count . toggleClass ( 'NB-error' , approved > this . MAX _FEEDS ) ;
2010-10-02 17:05:55 -04:00
$ ( '.NB-feedchooser-info-sort' , this . $modal ) . fadeOut ( 500 ) ;
2010-09-27 11:43:08 -04:00
if ( approved > this . MAX _FEEDS ) {
2012-03-06 11:41:57 -08:00
$submit . addClass ( 'NB-disabled' ) . addClass ( 'NB-modal-submit-grey' ) . attr ( 'disabled' , true ) . val ( 'Too many sites! Deselect ' + (
2010-09-27 11:43:08 -04:00
difference == 1 ?
'1 site...' :
difference + ' sites...'
) ) ;
} else {
2012-03-06 11:41:57 -08:00
$submit . removeClass ( 'NB-disabled' ) . removeClass ( 'NB-modal-submit-grey' ) . attr ( 'disabled' , false ) . val ( 'Turn on these ' + approved + ' sites, please' ) ;
2010-09-27 11:43:08 -04:00
}
2010-09-24 01:08:03 -04:00
} ,
initial _load _feeds : function ( ) {
2010-09-29 09:49:34 -04:00
var start = new Date ( ) ;
2010-09-24 01:08:03 -04:00
var self = this ;
var $feeds = $ ( '.feed' , this . $modal ) ;
2010-09-28 18:53:57 -04:00
var feeds = this . model . get _feeds ( ) ;
2010-12-23 14:18:40 -05:00
if ( ! _ . keys ( feeds ) . length ) {
_ . defer ( _ . bind ( function ( ) {
var $info = $ ( '.NB-feedchooser-info' , this . $modal ) ;
$ ( '.NB-feedchooser-info-counts' , $info ) . hide ( ) ;
$ ( '.NB-feedchooser-info-sort' , $info ) . hide ( ) ;
$ ( '#NB-feedchooser-feeds' ) . hide ( ) ;
$ ( '.NB-modal-submit-save' ) . hide ( ) ;
$ ( '.NB-modal-submit-add' ) . show ( ) ;
} , this ) ) ;
return ;
}
2010-09-28 18:53:57 -04:00
var active _feeds = _ . any ( _ . pluck ( feeds , 'active' ) ) ;
if ( ! active _feeds ) {
// Get feed subscribers
var min _subscribers = _ . last (
_ . first (
2010-11-29 21:34:52 -05:00
_ . pluck ( _ . select ( this . model . get _feeds ( ) , function ( f ) { return ! f . has _exception ; } ) , 'subs' ) . sort ( function ( a , b ) {
2010-09-28 18:53:57 -04:00
return b - a ;
} ) ,
this . MAX _FEEDS
)
) ;
2010-09-24 18:22:12 -04:00
2010-09-28 18:53:57 -04:00
// Decline everything
2010-09-29 09:49:34 -04:00
var approve _feeds = [ ] ;
_ . each ( feeds , function ( feed , feed _id ) {
self . add _feed _to _decline ( parseInt ( feed _id , 10 ) ) ;
2010-09-24 18:22:12 -04:00
2010-09-29 09:49:34 -04:00
if ( feed [ 'subs' ] >= min _subscribers ) {
approve _feeds . push ( parseInt ( feed _id , 10 ) ) ;
2010-09-28 18:53:57 -04:00
}
} ) ;
2010-09-24 18:22:12 -04:00
2010-09-28 18:53:57 -04:00
// Approve feeds in subs
2010-09-29 09:49:34 -04:00
_ . each ( approve _feeds , function ( feed _id ) {
2010-09-28 18:53:57 -04:00
if ( self . model . get _feed ( feed _id ) [ 'subs' ] > min _subscribers &&
2010-11-29 21:34:52 -05:00
self . approve _list . length < self . MAX _FEEDS &&
! self . model . get _feed ( feed _id ) [ 'has_exception' ] ) {
2010-09-28 18:53:57 -04:00
self . add _feed _to _approve ( feed _id ) ;
}
} ) ;
2010-09-29 09:49:34 -04:00
_ . each ( approve _feeds , function ( feed _id ) {
2010-09-28 18:53:57 -04:00
if ( self . model . get _feed ( feed _id ) [ 'subs' ] == min _subscribers &&
self . approve _list . length < self . MAX _FEEDS ) {
self . add _feed _to _approve ( feed _id ) ;
}
} ) ;
} else {
// Get active feeds
var active _feeds = _ . pluck ( _ . select ( feeds , function ( feed ) {
if ( feed . active ) return true ;
} ) , 'id' ) ;
2010-09-29 09:49:34 -04:00
this . approve _list = active _feeds ;
2010-09-28 18:53:57 -04:00
// Approve or decline
var feeds = [ ] ;
$feeds . each ( function ( ) {
2011-03-31 09:25:48 -04:00
var feed _id = parseInt ( $ ( this ) . attr ( 'data-id' ) , 10 ) ;
2010-09-28 18:53:57 -04:00
if ( _ . contains ( active _feeds , feed _id ) ) {
2010-10-23 11:22:57 -04:00
self . add _feed _to _approve ( feed _id ) ;
2010-09-28 18:53:57 -04:00
} else {
self . add _feed _to _decline ( feed _id ) ;
}
} ) ;
}
2010-10-30 00:27:52 -04:00
_ . defer ( _ . bind ( function ( ) { this . update _counts ( ) ; } , this ) ) ;
2010-09-28 18:53:57 -04:00
} ,
save : function ( ) {
2010-10-14 09:51:56 -04:00
var self = this ;
2010-10-02 17:05:55 -04:00
var approve _list = this . approve _list ;
2010-09-28 18:53:57 -04:00
var $submit = $ ( '.NB-modal-submit-save' , this . $modal ) ;
$submit . addClass ( 'NB-disabled' ) . val ( 'Saving...' ) ;
2010-10-18 19:21:02 -04:00
this . update _homepage _count ( ) ;
2010-09-28 18:53:57 -04:00
2010-10-02 17:05:55 -04:00
this . model . save _feed _chooser ( approve _list , function ( ) {
2010-10-14 09:51:56 -04:00
self . flags [ 'has_saved' ] = true ;
2010-10-02 17:05:55 -04:00
NEWSBLUR . reader . hide _feed _chooser _button ( ) ;
2010-09-28 18:53:57 -04:00
NEWSBLUR . reader . load _feeds ( ) ;
$ . modal . close ( ) ;
2010-09-24 01:08:03 -04:00
} ) ;
} ,
2010-12-23 14:18:40 -05:00
close _and _add : function ( ) {
$ . modal . close ( function ( ) {
NEWSBLUR . add _feed = new NEWSBLUR . ReaderAddFeed ( ) ;
} ) ;
} ,
2012-02-29 12:15:01 -08:00
open _stripe _form : function ( ) {
window . location . href = "https://" + NEWSBLUR . URLs . domain + "/profile/stripe_form?plan=" + this . plan ;
} ,
2010-10-18 19:21:02 -04:00
update _homepage _count : function ( ) {
var $count = $ ( '.NB-module-account-feedcount' ) ;
var $button = $ ( '.NB-module-account-upgrade' ) ;
var approve _list = this . approve _list ;
$count . text ( approve _list . length ) ;
$button . removeClass ( 'NB-modal-submit-green' ) . addClass ( 'NB-modal-submit-close' ) ;
2010-12-31 15:03:34 -05:00
$ ( '.NB-module-account-trainer' ) . removeClass ( 'NB-hidden' ) . hide ( ) . slideDown ( 500 ) ;
2010-10-18 19:21:02 -04:00
} ,
2012-02-29 12:15:01 -08:00
choose _dollar _amount : function ( plan ) {
2011-03-02 17:58:12 -05:00
var $value = $ ( '.NB-feedchooser-dollar-value' , this . $modal ) ;
2011-02-07 23:41:25 -05:00
var $input = $ ( 'input[name=a3]' ) ;
2012-02-29 12:15:01 -08:00
this . plan = plan ;
2011-03-02 17:58:12 -05:00
$value . removeClass ( 'NB-selected' ) ;
2012-02-29 12:15:01 -08:00
$value . filter ( '.NB-' + plan ) . addClass ( 'NB-selected' ) ;
if ( plan == 1 ) {
2011-02-07 23:41:25 -05:00
$input . val ( 12 ) ;
2012-02-29 12:15:01 -08:00
} else if ( plan == 2 ) {
2011-03-02 17:58:12 -05:00
$input . val ( 24 ) ;
2012-02-29 12:15:01 -08:00
} else if ( plan == 3 ) {
2011-03-02 17:58:12 -05:00
$input . val ( 36 ) ;
2011-02-07 23:41:25 -05:00
}
} ,
2010-09-24 01:08:03 -04:00
// ===========
// = Actions =
// ===========
handle _click : function ( elem , e ) {
var self = this ;
$ . targetIs ( e , { tagSelector : '.feed' } , _ . bind ( function ( $t , $p ) {
e . preventDefault ( ) ;
2011-03-31 09:25:48 -04:00
var feed _id = parseInt ( $t . attr ( 'data-id' ) , 10 ) ;
2010-09-24 01:08:03 -04:00
if ( _ . contains ( this . approve _list , feed _id ) ) {
2010-09-29 09:49:34 -04:00
this . add _feed _to _decline ( feed _id , true ) ;
2010-09-24 01:08:03 -04:00
} else {
2010-09-29 09:49:34 -04:00
this . add _feed _to _approve ( feed _id , true ) ;
2010-09-24 01:08:03 -04:00
}
} , this ) ) ;
2010-09-27 11:43:08 -04:00
$ . targetIs ( e , { tagSelector : '.NB-modal-submit-save' } , _ . bind ( function ( $t , $p ) {
e . preventDefault ( ) ;
2010-09-28 18:53:57 -04:00
this . save ( ) ;
2010-09-27 11:43:08 -04:00
} , this ) ) ;
2011-03-02 17:58:12 -05:00
2010-12-23 14:18:40 -05:00
$ . targetIs ( e , { tagSelector : '.NB-modal-submit-add' } , _ . bind ( function ( $t , $p ) {
e . preventDefault ( ) ;
this . close _and _add ( ) ;
} , this ) ) ;
2011-03-02 17:58:12 -05:00
2012-02-29 12:15:01 -08:00
$ . targetIs ( e , { tagSelector : '.NB-stripe-button' } , _ . bind ( function ( $t , $p ) {
e . preventDefault ( ) ;
this . open _stripe _form ( ) ;
} , this ) ) ;
2011-03-02 17:58:12 -05:00
$ . targetIs ( e , { tagSelector : '.NB-feedchooser-dollar-value' } , _ . bind ( function ( $t , $p ) {
e . preventDefault ( ) ;
var step ;
if ( $t . hasClass ( 'NB-1' ) ) {
step = 1 ;
} else if ( $t . hasClass ( 'NB-2' ) ) {
step = 2 ;
} else if ( $t . hasClass ( 'NB-3' ) ) {
step = 3 ;
}
this . choose _dollar _amount ( step ) ;
} , this ) ) ;
2010-09-24 01:08:03 -04:00
} ,
handle _cancel : function ( ) {
var $cancel = $ ( '.NB-modal-cancel' , this . $modal ) ;
$cancel . click ( function ( e ) {
e . preventDefault ( ) ;
$ . modal . close ( ) ;
} ) ;
}
} ;