Hi, We need to edit our knowledge base articles beforehand and publish them then all at the same time on a later date, together with a new the release of our product. It is however very difficult to to keep track of which articles have been edite 続きを読む
Just the date when it was last edited vs. last published. So we can easily see which articles are updated and waiting to be published once our own pr...続きを読む
Hi, We need to edit our knowledge base articles beforehand and publish them then all at the same time on a later date, together with a new the release of our product. It is however very difficult to to keep track of which articles have been edite 続きを読む
Just the date when it was last edited vs. last published. So we can easily see which articles are updated and waiting to be published once our own pr...続きを読む
Hi, First of all, I'm referring to software subscriptions, not the communication subscriptions in CRM. We are a SaaS company, using Marketing Hub professional, Sales hub Starter, Service Hub professional and CMS professional. We sell subscri 続きを読む
Hi Dan, Thanks for the suggestion! But if I'm not mistaken, Hubspot payments is not available outside US. We are in Belgium and use Stripe for payme...続きを読む
Hi, First of all, I'm referring to software subscriptions, not the communication subscriptions in CRM. We are a SaaS company, using Marketing Hub professional, Sales hub Starter, Service Hub professional and CMS professional. We sell subscri 続きを読む
Hi Dan, Thanks for the suggestion! But if I'm not mistaken, Hubspot payments is not available outside US. We are in Belgium and use Stripe for payme...続きを読む
The only way to see how a list has increased or decreased in size is to go to the individual list performance area. But we cannot save the report or add it to a dashboard. It would be great to not only save that report but then take it a step farthe 続きを読む
I also believe this is an important feature request. I would like to add that exporting the list size over time as an xlsx should be possible as well...続きを読む
I am importing a CSV file with contacts that have multiple email addresses. Hubspot supports multiple email addresses in the "Email" field, which is wonderful, but the data cannot be imported this way. To import, I had to create multiple email pro 続きを読む
Hi, We often have customers replying to an old support email for a new request. When that happens, the old ticket originally attached to that thread is re-opened. What we want is in a simple way to create a new ticket for that conversation, while 続きを読む
Hi, We need to edit our knowledge base articles beforehand and publish them then all at the same time on a later date, together with a new the release of our product. It is however very difficult to to keep track of which articles have been edite 続きを読む
Just the date when it was last edited vs. last published. So we can easily see which articles are updated and waiting to be published once our own pr...続きを読む
Hi, I'm looking for a simple solution to report historical data about our customer's subscriptions for our software tool. A subscription is triggered by a subscription start date which overwrites the previous subscription date. This means the prope 続きを読む
Hi John, tnx for thetip. I have been thinking about that earlier but I believe I left that path as there are limitations in nr of deals, or in deal ...続きを読む
Hi, First of all, I'm referring to software subscriptions, not the communication subscriptions in CRM. We are a SaaS company, using Marketing Hub professional, Sales hub Starter, Service Hub professional and CMS professional. We sell subscri 続きを読む
Hi Dan, Thanks for the suggestion! But if I'm not mistaken, Hubspot payments is not available outside US. We are in Belgium and use Stripe for payme...続きを読む
Hi, We often have customers replying to an old support email for a new request. When that happens, the old ticket originally attached to that thread is re-opened. What we want is in a simple way to create a new ticket for that conversation, whi 続きを読む
Hi, I'm using the IP Country property to fill our own custom Country property using a workflow. But sometimes I get an error: The contact property couldn't be copied. The record doesn't have this property or the property doesn't have a value. 続きを読む
//
//
//
//
//
(function($) {
//START END-USER CONFIGURATION
//------------------------------
//selectors for hover card triggers
var allHoverCardTriggers = '.author-name-link,.friend-list .friend a,.username a,.avatar,.user-avatar,.author-img, .authors a, .messageauthorusername a, a.lia-user-name-link, .js-latest-post-by-from a, .user-online-list li a, a.UserAvatar, .customUsersOnline a, #authors a,.dashboard-followers a.user-name, .dashboard-following a.user-name,.author-login-wrapper a, .hb-leaderboard a, .author-img-floated';
// Forward calling page's URL params to endpoint URL as well, helps with testing!
var params = (new URL(location.href)).searchParams;
var userApiUrl = '/plugins/custom/hubspot/hubspot/hovercardendpoint?' + ((params.set('user_id', '') == []._) && params.toString());
if($('.hover-card-container').length<1){
$('body').append('');
}
var cardWrapper = $('.hover-card-container');
var error = false;
var thisUserID = '';
var thisUserLogin = '';
var userLink ='';
var cardTimer;
var leaveTimer;
function mouseenter(Elem) {
var thisEl = Elem;
cardTimer = setTimeout(function(){
var docWidth = $(document).width();
var rightSide = false;
var userLink = thisEl.attr('href');
if($('.ViewProfilePage').length && $('img.lia-user-avatar-profile',thisEl).length){thisUserID = '67324';}
else if(thisEl.attr('href')=='#' || thisEl.attr('href')=='' || !userLink.match('viewprofilepage')){
return false;}
else{
var thisLen = (userLink).split('/');
thisUserID = (thisLen)[thisLen.length-1];
}
var thisCard = $('.profileCard[data-user='+thisUserID+']',cardWrapper);
var cardId = 'userProfileCard-'+ thisUserID;
var addAttr = thisEl.attr('aria-describedby',cardId);
var thisElTopOffset = Math.round(thisEl.offset().top+(thisEl.height()/2)+30);
var thisElbottomoffset = "auto";
var className = "";
var winHeight = $(window).height();
var elOffset = thisEl.offset();
var scrollTop = $(window).scrollTop();
var elementOffset = thisEl.offset().top;
var distanceTop = (elementOffset - scrollTop);
var distanceBottom = (winHeight + scrollTop) - (elOffset.top + thisEl.outerHeight(true));
var distanceLeft = Math.round(thisEl.offset().left);
var bodyHight = $('body').height();
var topParam = '';
var bottomparam = '';
var position = '';
var className = 'topArrow';
cardId
if(distanceBottom < 300 ){
if(distanceLeft < 59){
thisCard.removeClass('bottomArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
var thisElTopOffset = (thisElTopOffset)-(301); var className = 'bottomArrow'; thisCard.removeClass('topArrow');
thisCard.removeClass('leftArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
else{
if(distanceLeft < 59){
thisCard.removeClass('topArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
thisCard.removeClass('leftArrow');
thisCard.removeClass('bottomArrow').addClass('topArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
if(thisCard.length && $('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length<1){
$('.profileCard',cardWrapper).hide();
thisCard.addClass(className);
rightSide?thisCard.addClass('rightArrow'):thisCard.removeClass('rightArrow');
thisCard.delay(0).css({'top':(thisElTopOffset),'left':distanceLeft,'bottom':thisElbottomoffset}).fadeIn();
} else {
var ajaxReturn = '';
//just in case
thisCard.remove();
//hover card wrapper markup
var rightArrowClass = rightSide?'rightArrow':'';
if(thisElTopOffset != "auto"){
topParam = 'px';
}
if(thisElbottomoffset != "auto"){
bottomparam = 'px';
}
var profileCardHtml = '';
$.when(
//get the background
$.ajax({
type: 'GET',
url: userApiUrl+thisUserID,
dataType: 'html',
success: function(data) {
$('.profileCard',cardWrapper).hide();
ajaxReturn = data;
}
})
)
.done(function(){
cardWrapper.append(profileCardHtml);
$('.profileCard[data-user='+thisUserID+']',cardWrapper).eq(0).empty().html(ajaxReturn);
if($('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length){
$('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).parents('div.profileCard').remove();
}
})
.fail(function(){
//uh oh - bail out!
$('.profileCard',cardWrapper).hide();
});
}
}, 360);
}
function mouseleave(e) {
clearTimeout(cardTimer);
// glowingblue: When the user leaves the hovercard trigger, wait because the leaving could be
// to interact with the hovercard, if we don't wait it will just disappear...because
// we left the trigger, right...so we'll have another handler that check if the mouse is
// over the hovercard and if so clears this timer, so the card doesn't close here
leaveTimer = setTimeout(function() {
if ($('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).length) {
$('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).fadeOut('fast');
} else {
$(".profileCard").fadeOut('fast');
}
}, 2400);
}
$(document).on("mouseenter focusin", allHoverCardTriggers, function(event) {
if(!($(this).parents().hasClass('custom-header'))&& !($(this).parents().hasClass('green-wrap'))){
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseenter($(this));
event.stopPropagation();
}
});
$(document).on("mouseleave focusout", allHoverCardTriggers, function(event) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseleave(event);
event.stopPropagation();
});
// glowingblue: Add handlers for when the users interacts with the hovercard, no closing!
$('.hover-card-container').on('mouseenter', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
});
$('.hover-card-container').on('mouseleave', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
if ( $(e.target).is('.profileCard[style*="block"]') ) {
leaveTimer = setTimeout(function() {
$(e.target).fadeOut('fast');
}, 2400);
}
});
// glowingblue: add one global root level click handler to also close any visible hovercards
// if the user taps/clicks outside the hovercard
$(document).on('mousedown', function(e) {
if ( !$(e.target).parents('.hover-card-container').length ) {
(leaveTimer != []._) && clearTimeout(leaveTimer);
$('.hover-card-container .profileCard[style*="block"]').each(function() {
$(this).fadeOut('fast');
});
}
});
})(LITHIUM.jQuery);
(function($) {
$(document).ready(function(){
var originalElementId;
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function errorDisplay(errType) {
var errAuth = '