Created
October 18, 2016 13:47
-
-
Save islanddog/60253e8cedb18db26743dc99c896d96c to your computer and use it in GitHub Desktop.
SproutApps - HelpScout Desk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jQuery.noConflict(); | |
jQuery(function($) { | |
$(window).load(function(){ | |
}); | |
$(document).ready(function($){ | |
var $shortcode_html = $("#hsd_conversations_table"); | |
$('#hsd_message').redactor({ | |
linkSize: 1000, | |
minHeight: 200 // pixels | |
}); | |
$('#hsd_message_form').on('submit', function(e) { | |
var $button = $('#hsd_submit'); | |
$button.hide(); | |
$button.after('<span class="submit_loading loading"></span>'); | |
}); | |
if ( hsd_js_object.conversation_id === undefined ) { | |
$.ajax({ | |
url: hsd_js_object.admin_ajax, | |
type: "POST", | |
data: { | |
action: 'hsd_shortcodes', | |
type: 'conversation_table', | |
mid: $shortcode_html.data( 'mailbox-id' ), | |
refresh_data: hsd_js_object.refresh_data, | |
current_page: hsd_js_object.current_page, | |
shortcodes_nonce: hsd_js_object.sec, | |
post_id: hsd_js_object.post_id, | |
conversation_id: hsd_js_object.conversation_id | |
}, | |
success: function(result){ | |
$shortcode_html.trigger( 'hsd_success_conversation', [ result ] ); | |
$shortcode_html.trigger( 'hsd_success_conversations_table', [ result ] ); | |
$shortcode_html.removeClass('loading'); | |
$shortcode_html.append( result ); | |
} | |
}); | |
} | |
else { | |
$.ajax({ | |
url: hsd_js_object.admin_ajax, | |
type: "POST", | |
data: { | |
action: 'hsd_shortcodes', | |
type: 'single_conversation', | |
mid: $shortcode_html.data( 'mailbox-id' ), | |
refresh_data: hsd_js_object.refresh_data, | |
current_page: hsd_js_object.current_page, | |
shortcodes_nonce: hsd_js_object.sec, | |
post_id: hsd_js_object.post_id, | |
conversation_id: hsd_js_object.conversation_id | |
}, | |
success: function(result){ | |
$shortcode_html.trigger( 'hsd_success_conversation', [ result ] ); | |
$shortcode_html.removeClass('loading'); | |
$shortcode_html.append( result ); | |
$('.conversation_body .message').readmore({ | |
speed: 75, | |
maxHeight: 100, | |
moreLink: '<a href="#" class="button-readmore">'+hsd_js_object.readmore+'</a>', | |
lessLink: '<a href="#" class="button-readmore">'+hsd_js_object.close+'</a>' | |
}); | |
var $item_status = $('#hsd_support_conversation').data( 'item-status' ); | |
if ( $item_status === 'closed' ) { | |
$('#close_thread_check').hide(); | |
}; | |
// convert gist links asynch with gist embeds | |
$('.conversation_body a[href*="gist.github.com"]').each(function () { | |
var link = $(this); | |
var href = $(this).attr('href'); | |
var id = href.substr(href.lastIndexOf('/') + 1); | |
link.html("<p>Loading Gist...</p>"); | |
$.ajax({ | |
url: "https://gist.github.com/" + id + ".json", | |
dataType: "jsonp", | |
cache: true, | |
success: function (data) { | |
if (data && data.div) { | |
if (!$("link[href='" + data.stylesheet + "']").length) { | |
$("head").append("<link href=\"" + data.stylesheet + "\" rel=\"stylesheet\" />"); | |
} | |
link.html(data.div); | |
} | |
}, | |
error: function () { | |
link.html("<p>Gist Load Failed</p>"); | |
} | |
}); | |
}); | |
$shortcode_html.trigger( 'hsd_post_success_conversation', [ result ] ); | |
} | |
}); | |
}; | |
}); | |
}); | |
/*! | |
* Readmore.js jQuery plugin | |
* Author: @jed_foster | |
* Project home: jedfoster.github.io/Readmore.js | |
* Licensed under the MIT license | |
*/ | |
;(function($) { | |
var readmore = 'readmore', | |
defaults = { | |
speed: 100, | |
maxHeight: 200, | |
heightMargin: 16, | |
moreLink: '<a href="#">Read More</a>', | |
lessLink: '<a href="#">Close</a>', | |
embedCSS: true, | |
sectionCSS: 'display: block; width: 100%;', | |
startOpen: false, | |
expandedClass: 'readmore-js-expanded', | |
collapsedClass: 'readmore-js-collapsed', | |
// callbacks | |
beforeToggle: function(){}, | |
afterToggle: function(){} | |
}, | |
cssEmbedded = false; | |
function Readmore( element, options ) { | |
this.element = element; | |
this.options = $.extend( {}, defaults, options); | |
$(this.element).data('max-height', this.options.maxHeight); | |
$(this.element).data('height-margin', this.options.heightMargin); | |
delete(this.options.maxHeight); | |
if(this.options.embedCSS && ! cssEmbedded) { | |
var styles = '.readmore-js-toggle, .readmore-js-section { ' + this.options.sectionCSS + ' } .readmore-js-section { overflow: hidden; }'; | |
(function(d,u) { | |
var css=d.createElement('style'); | |
css.type = 'text/css'; | |
if(css.styleSheet) { | |
css.styleSheet.cssText = u; | |
} | |
else { | |
css.appendChild(d.createTextNode(u)); | |
} | |
d.getElementsByTagName('head')[0].appendChild(css); | |
}(document, styles)); | |
cssEmbedded = true; | |
} | |
this._defaults = defaults; | |
this._name = readmore; | |
this.init(); | |
} | |
Readmore.prototype = { | |
init: function() { | |
var $this = this; | |
$(this.element).each(function() { | |
var current = $(this), | |
maxHeight = (current.css('max-height').replace(/[^-\d\.]/g, '') > current.data('max-height')) ? current.css('max-height').replace(/[^-\d\.]/g, '') : current.data('max-height'), | |
heightMargin = current.data('height-margin'); | |
if(current.css('max-height') != 'none') { | |
current.css('max-height', 'none'); | |
} | |
$this.setBoxHeight(current); | |
if(current.outerHeight(true) <= maxHeight + heightMargin) { | |
// The block is shorter than the limit, so there's no need to truncate it. | |
return true; | |
} | |
else { | |
current.addClass('readmore-js-section ' + $this.options.collapsedClass).data('collapsedHeight', maxHeight); | |
var useLink = $this.options.startOpen ? $this.options.lessLink : $this.options.moreLink; | |
current.after($(useLink).on('click', function(event) { $this.toggleSlider(this, current, event) }).addClass('readmore-js-toggle')); | |
if(!$this.options.startOpen) { | |
current.css({height: maxHeight}); | |
} | |
} | |
}); | |
$(window).on('resize', function(event) { | |
$this.resizeBoxes(); | |
}); | |
}, | |
toggleSlider: function(trigger, element, event) | |
{ | |
event.preventDefault(); | |
var $this = this, | |
newHeight = newLink = sectionClass = '', | |
expanded = false, | |
collapsedHeight = $(element).data('collapsedHeight'); | |
if ($(element).height() <= collapsedHeight) { | |
newHeight = $(element).data('expandedHeight') + 'px'; | |
newLink = 'lessLink'; | |
expanded = true; | |
sectionClass = $this.options.expandedClass; | |
} | |
else { | |
newHeight = collapsedHeight; | |
newLink = 'moreLink'; | |
sectionClass = $this.options.collapsedClass; | |
} | |
// Fire beforeToggle callback | |
$this.options.beforeToggle(trigger, element, expanded); | |
$(element).animate({'height': newHeight}, {duration: $this.options.speed, complete: function() { | |
// Fire afterToggle callback | |
$this.options.afterToggle(trigger, element, expanded); | |
$(trigger).replaceWith($($this.options[newLink]).on('click', function(event) { $this.toggleSlider(this, element, event) }).addClass('readmore-js-toggle')); | |
$(this).removeClass($this.options.collapsedClass + ' ' + $this.options.expandedClass).addClass(sectionClass); | |
} | |
}); | |
}, | |
setBoxHeight: function(element) { | |
var el = element.clone().css({'height': 'auto', 'width': element.width(), 'overflow': 'hidden'}).insertAfter(element), | |
height = el.outerHeight(true); | |
el.remove(); | |
element.data('expandedHeight', height); | |
}, | |
resizeBoxes: function() { | |
var $this = this; | |
$('.readmore-js-section').each(function() { | |
var current = $(this); | |
$this.setBoxHeight(current); | |
if(current.height() > current.data('expandedHeight') || (current.hasClass($this.options.expandedClass) && current.height() < current.data('expandedHeight')) ) { | |
current.css('height', current.data('expandedHeight')); | |
} | |
}); | |
}, | |
destroy: function() { | |
var $this = this; | |
$(this.element).each(function() { | |
var current = $(this); | |
current.removeClass('readmore-js-section ' + $this.options.collapsedClass + ' ' + $this.options.expandedClass).css({'max-height': '', 'height': 'auto'}).next('.readmore-js-toggle').remove(); | |
current.removeData(); | |
}); | |
} | |
}; | |
$.fn[readmore] = function( options ) { | |
var args = arguments; | |
if (options === undefined || typeof options === 'object') { | |
return this.each(function () { | |
if ($.data(this, 'plugin_' + readmore)) { | |
var instance = $.data(this, 'plugin_' + readmore); | |
instance['destroy'].apply(instance); | |
} | |
$.data(this, 'plugin_' + readmore, new Readmore( this, options )); | |
}); | |
} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { | |
return this.each(function () { | |
var instance = $.data(this, 'plugin_' + readmore); | |
if (instance instanceof Readmore && typeof instance[options] === 'function') { | |
instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) ); | |
} | |
}); | |
} | |
} | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment