mirror of
				https://github.com/beestat/app.git
				synced 2025-10-31 01:57:01 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Newsletter
 | |
|  */
 | |
| beestat.component.modal.newsletter = function() {
 | |
|   beestat.component.modal.apply(this, arguments);
 | |
| };
 | |
| beestat.extend(beestat.component.modal.newsletter, beestat.component.modal);
 | |
| 
 | |
| /**
 | |
|  * Decorate
 | |
|  *
 | |
|  * @param {rocket.Elements} parent
 | |
|  */
 | |
| beestat.component.modal.newsletter.prototype.decorate_contents_ = function(parent) {
 | |
|   parent.appendChild($.createElement('p').innerHTML('Interested in following beestat development? Subscribe to the newsletter for an updates. Emails are sparse; only a few every year.'));
 | |
| 
 | |
|   this.email_address_ = new beestat.component.input.text()
 | |
|     .set_width('50%');
 | |
| 
 | |
|   if (this.subscribed_ === true) {
 | |
|     this.email_address_.set_icon('check');
 | |
|     this.email_address_.set_enabled(false);
 | |
|     this.email_address_.set_value(this.state_.email_address_);
 | |
|   } else if (this.subscribed_ === false) {
 | |
|     this.email_address_.set_icon('email');
 | |
|     this.email_address_.set_value(this.state_.email_address_);
 | |
|   } else {
 | |
|     this.email_address_.set_icon('email');
 | |
|     this.email_address_.set_value(beestat.user.get().email_address);
 | |
|   }
 | |
| 
 | |
|   this.email_address_.render(parent);
 | |
| 
 | |
|   if (this.subscribed_ === true) {
 | |
|     parent.appendChild($.createElement('p').innerHTML('You are now subscribed to the beestat newsletter!'));
 | |
|   } else if (this.subscribed_ === false) {
 | |
|     parent.appendChild(
 | |
|       $.createElement('p')
 | |
|         .innerHTML(this.error_)
 | |
|         .style('color', beestat.style.color.red.base)
 | |
|     );
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get title.
 | |
|  *
 | |
|  * @return {string} Tht title.
 | |
|  */
 | |
| beestat.component.modal.newsletter.prototype.get_title_ = function() {
 | |
|   return 'Newsletter';
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the buttons that go on the bottom of this modal.
 | |
|  *
 | |
|  * @return {[beestat.component.button]} The buttons.
 | |
|  */
 | |
| beestat.component.modal.newsletter.prototype.get_buttons_ = function() {
 | |
|   var self = this;
 | |
| 
 | |
|   let buttons = [];
 | |
|   if (this.subscribed_ === true) {
 | |
|     const ok = new beestat.component.tile()
 | |
|       .set_background_color(beestat.style.color.green.base)
 | |
|       .set_background_hover_color(beestat.style.color.green.light)
 | |
|       .set_text_color('#fff')
 | |
|       .set_text('Close')
 | |
|       .addEventListener('click', function() {
 | |
|         self.dispose();
 | |
|       });
 | |
|     buttons.push(ok);
 | |
|   } else {
 | |
|     const no_thanks = new beestat.component.tile()
 | |
|       .set_background_color('#fff')
 | |
|       .set_text_color(beestat.style.color.gray.base)
 | |
|       .set_text_hover_color(beestat.style.color.red.base)
 | |
|       .set_text('No Thanks')
 | |
|       .addEventListener('click', function() {
 | |
|         self.dispose();
 | |
|       });
 | |
|     buttons.push(no_thanks);
 | |
| 
 | |
|     const subscribe = new beestat.component.tile()
 | |
|       .set_background_color(beestat.style.color.green.base)
 | |
|       .set_background_hover_color(beestat.style.color.green.light)
 | |
|       .set_text_color('#fff')
 | |
|       .set_text('Subscribe')
 | |
|       .addEventListener('click', function() {
 | |
|         self.state_.email_address_ = self.email_address_.get_value();
 | |
| 
 | |
|         if (self.state_.email_address_.match(/.+@.+\..+/) === null) {
 | |
|           self.subscribed_ = false;
 | |
|           self.error_ = 'Invalid email address.';
 | |
|           self.rerender();
 | |
|           return;
 | |
|         }
 | |
| 
 | |
|         this
 | |
|           .set_background_color(beestat.style.color.gray.base)
 | |
|           .set_background_hover_color()
 | |
|           .removeEventListener('click');
 | |
| 
 | |
|         no_thanks.removeEventListener('click');
 | |
| 
 | |
|         new beestat.api()
 | |
|           .add_call(
 | |
|             'mailgun',
 | |
|             'subscribe',
 | |
|             {'email_address': self.state_.email_address_}
 | |
|           )
 | |
|           .set_callback(function(response) {
 | |
|             if (response.subscribed === true) {
 | |
|               self.subscribed_ = true;
 | |
|             } else {
 | |
|               self.subscribed_ = false;
 | |
|               self.error_ = 'Subscribe failed; please try again later.';
 | |
|             }
 | |
|             self.rerender();
 | |
|           })
 | |
|           .send();
 | |
|       });
 | |
|     buttons.push(subscribe);
 | |
|   }
 | |
| 
 | |
|   return buttons;
 | |
| };
 |