{"version":3,"sources":["routes.json.js","app.manager.js","ctrl.billing.js","ctrl.content.js","ctrl.course.js","ctrl.group.js","ctrl.panel.js","ctrl.project.js","ctrl.user.js","ctrl.analytics.js","dir.dynamics.js","router.manager.js"],"names":["appRoutes","controller","angular","module","constant","factory","$q","Upload","Api","STATIC_FS","$window","upload","file","scope","id","deferred","defer","user","localStorage","getItem","JSON","parse","bcsetup","name","undefined","payload","file_alias","size","call","user_id","project_id","post","err","resp","resolve","fields","response","gcs_upload_data","filename","file_name","file_exists","url","data","then","evt","progressPercentage","parseInt","loaded","total","promise","run","$http","defaults","headers","bcp","_bcp","Authorization","window","$scope","$parent","currentUser","userVerification","queryString","unserialize","location","href","split","pop","pending_email_verification","progress","syncData","newUser","$on","scrollTo","getAddress","cep","model","prefix","method","successCallback","logradouro","localidade","bairro","uf","directive","require","link","element","attrs","ngModel","$parsers","push","val","$formatters","billingCtrl","iuguTokenErrors","number","is_invalid","verification_value","first_name","last_name","expiration","loadAddress","zipcode","jQuery","getJSON","result","card","address","district","state","states","filter","s","code","toLowerCase","onChangeState","$apply","getDiffDate","endDate","date1","Date","date2","differenceInTime","getTime","differenceInDays","Math","round","billing","NgTableParams","ReqAndUpload","$translate","$routeParams","formNotify","role","document","Iugu","setAccountID","setTestMode","customer","subscription","changecard","projectUsesLegacyBilling","country","city","countries","cities","plansDescriptions","professional","business","enterprise","translations","getInfo","get","last_digits","display_number","replace","holder_name","phone_number","phone_prefix","document_number","zip_code","address_district","address_street","street_number","address_number","street_complement","address_complement","_id","address_country_id","address_state_id","address_city_id","getCountries","amountValue","amount_value","currency","amount_currency","description","plan_name","error_code","getSurname","full_name","shift","join","getFirstName","restartSubscription","put","sort","a","b","c","onChangeCountry","submitFormCard","paymentMethod","Form","App","toast","$setPristine","$","closeModal","loading","add","$invalid","email","expires","exp_month","getMonth","exp_year","getFullYear","creditCard","CreditCard","cvc","createPaymentToken","errors","erroMsgs","prop","substr","card_token","card_issuer","$watch","toString","match","findZipCode","invoice","total_amount_due_value","options","cancelSubscription","changePlan","OfferInvoice","submitChangePlan","setTimeout","reload","offer_id","invoices","plans","activeOffer","switchOffer","offer","featurePlans","courses_feature_enabled","post_types_feature_enabled","newsletter_feature_enabled","own_domain_feature_enabled","analytics_feature_enabled","user_list_exportation_feature_enabled","integrations_feature_enabled","groups_feature_enabled","personal_assistance_feature_enabled","plan","find","e","title","offers","years","o","primary","interval_count","interval_type","months","value","amount","length","centsValue","features","feature","inactive","setItem","stringify","contentCtrl","$elm","$attrs","$setViewValue","articleDetail","currentTime","isCourse","isCourseWrite","community","isGroup","moduleId","YUMMLY","moduleRegex","courseIdRegex","communityRegex","getCourseModule","courseId","res","feed_enabled","articles_enabled","ret","moduleList","moduleSelected","obj","withoutModule","unshift","hash","indexOf","exec","total_articles","uploading","behalf","article","content","tags","content_type","params","type","scheduled_date","ctrlForm","calendar","days","hours","minutes","month","getUTCMonth","day","getUTCDate","year","getUTCFullYear","getHours","getMinutes","yearSelected","y","monthSelected","m","daySelected","d","hourSelected","h","minuteSelected","changeSelectedModule","changeGroup","group","changeYear","setYear","changeMonth","setMonth","i","daysInMonth","changeDay","setDate","changeHour","hour","setHours","changeMinute","minute","setMinutes","date","getYear","getDate","canSetScheduledDate","ROLES","placeholder","url_only","changeposttitle","setPlaceholder","contentType","selected","image","image_cover","url_image_cover","test","Materialize","getUserData","userId","mainBlog","_bcsetup","shared_posts","hostname","banned","groups","can_publish","projects","project","project_data","key","projectGroups","settings","policies","post_creation_role","page_id","groupKeys","Object","keys","count","groupCount","checked","hasOwnProperty","groupSelected","sharedPostOnly","forEach","signupPending","item","slug","course_id","index","arr","articleCB","old_slug","oldListItens","copy","listItems","oldRecipeStages","recipe","stages","course_module_id","articleCourseVerified","publish","objDate","toISOString","checkIfCourseAdm","checkIfGroupAdm","checkIfGroupOwner","seoReport","userCourses","courses","articleCourseId","course","isUserCourseAdm","userGroups","articleGroupId","groupToCheck","blog","changeContentType","changeGroupSelected","approve","loadData","disapprove","disapproval_motive","motive","motive_other","unpublish","restore","action","cancel_publishing","delete","article_update","update","status","seo","header","pagetopic","trim","pagetopic_slug","article_content","meta_description","pattern","RegExp","articleSave","ingredients","$submitted","openModal","trigger","Event","keyCode","which","saving","autoSave","show","append","course_class_id","promises","url_image","uploadRequest","uploadImage","all","saveArticle","Boolean","editable","unit_text","stage","steps","isAutoSave","now","apiCall","save","msg","empty","history","back","text","hide","field","list","path","static_path","articles","commentsCtrl","comments","searchStatus","page_label","author_label","author_id","group_id","author","searchMode","tabs","mode","filter_label","searchMode_label","SELF","PENDING","ALL","PAGES","searchStatus_label","PUBLISHED","SCHEDULED","DRAFT","DISAPPROVED","COMMUNITY","GROUPS","ADMGROUPS","NOADMGROUPS","searchFilter","next","page","listPosts","changeMode","listRaws","changeFilter","sort_field","sort_order","search","kw","requestPost","cancel","list_filter","last","currentPage","param","noresults","pages","ceil","label","changeAuthor","counters","counter","blocked","contentTotal","commentApproval","change_comments","commentFilter_label","commentStatus_label","commentStatus","commentFilter","changeStatus","input","Array","isArray","commentCollection","manageStatus","splice","markAll","delegate","is","each","parents","collection","courseCtrl","searchKw","participatingCoursesCounter","administratingCoursesCounter","allCoursesCounter","requestCounters","blogs","redirectCourses","course_exit","new","preSave","category_id","callbackSave","callbackError","error","toastError","detail","isAdmin","apiPathmonetization","yScrollPosition","courseloading","currentTab","monetizations","user_searching","loadingUserStatistics","userStatistics","total_users","completion_rate","progress_avg","addEventListener","elems","querySelectorAll","instances","M","Collapsible","init","ready","collapsible","accountMonetization","newAccountMonetization","preAddUserMonetization","account_id","accountId","user_name","user_email","user_slug","user_image","company_document","companyDocument","company_name","companyName","saveMonetization","target_monetization_account_id","removeMonetizationAccount","dataCourse","signup_policy","autocomplete","clearMonetizationAffiliate","FilterCurrencyLevel","saveUrlHotmart","urlHotmart","custom_purchase_url","changeTab","tab","showMonetizationTabs","stripe_connected_account_id","getAllPricingForCurrentCourse","userCountStatistics","loadingUserCountStatistics","products","p","enabled","filterDateNpsIni","filterDateNpsEnd","filterNpsSelected","questionsNPS","currentPageNPS","totalClassesNps","modulesNPS","courseNPS","courseReviews","loadingNPS","today","initialDate","endDateNps","iniDateNps","getAllNps","pageSize","dateIni","dateEnd","circleBox","body","style","lang","total_classes","modules","summary","nps","total_reviews","setProperty","changeNpsQuestion","getQuestionsNPS","searchNps","classTitle","classId","totalReviewsNPS","reviewsNPS","toggle","pageNPSModal","pageSizeModal","openModalNpsReview","getNpsReview","reviews","closeNpsReviews","filterDateReviewIni","filterDateReviewEnd","filterReviewSelected","questionsReview","currentPageReview","totalClassesReview","modulesReview","loadingReview","endDateReview","iniDateReview","getAllReview","changeReviewQuestion","getQuestionsReview","searchReview","totalReviewsQuestions","reviewsQuestions","pageReviewModal","openModalQuestionReview","getQuestionReview","closeQuestionReviews","publishCourse","courseReady","course_classes","searchLoading","courseGroupFilter","courseFilterMonetizationStatus","courseFilterRole","getUsers","target","monetization","courseGroupId","video_url","preAddUser","openUser","activeRole","new_user","courses_group","current_course_group","isManage","loadCoursesGroup","addNewUser","signup_pending","existsAsUser","existsAsAdm","methodCall","usr","courseUsers","items","courseAdmins","remove_role","subscriptionSuspension","subscriptionId","cancel_unsubscribe_request","coursesAccessEmail","listModules","openModule","newModule","saveModule","deleteModule","closeClass","editClass","takeoverOpen","class","openClass","class_id","module_id","scrollY","classloading","course_class","embed_type","can_be_completed","newClassModule","closeContentType","generated_class_id","stream_server_url","stream_key","stream_playback_url","stream_channel_arn","idModal","saveMidiaValidation","embedType","saveClass","deleteClass","uploadFile","invalid","files","exists","uploadingFile","$error","removeFile","updatingModules","updateModules","clearTimeout","course_modules","moduleObj","attr","classes","moduleSortableOptions","handle","forcePlaceholderSize","stop","classSortableOptions","connectWith","language","addCourseGroup","letterGroup","getLetterGroup","removeClass","manageCourseGroup","modules_configurations","activate_in","link2WebHookHotmart","editSaveGroup","_fixDate","cancelEditSaveGroup","changeDateModulesConfigurations","setMilliseconds","en","ms","wf","wl","td","clear","close","dateformat","monthShort","weekdaysFull","weekdaysLetter","disable","minDate","maxDate","floor","on","event","preventDefault","coProductions","coProducer","newCoProducer","isEditCoProducer","totalRevenue","editCoProducerItem","showUnloadMsgCoProducer","enabledSplit","loadCoProductions","commission","percentage_value","job","company","join_date","terms","hasClass","confirm","returnValue","onkeypressCoProducer","maxValue","setNewCoProducer","toogleCoProducer","editCoProducer","getUserIndexCoProducer","removeCoProducer","addCoProducer","form","saveCoProducer","splitPost","coproducers","toggleEnabledSplit","findIndex","groupCtrl","groupNew","newCB","group_exit","redirectGroups","groupDetail","post_count","preUpdate","author_name","author_slug","created","followers_count","owner","posts_count","writers_count","cbUpdate","users","itens","errorCode","panelCtrl","approval","userApprovalCount","callCounters","GROUPS_ADM","GROUPS_NOADM","COURSES_ADM","COURSES_NOADM","requestUrl","postApprovalScope","commentCall","isadmin","profile","preProfile","console","callbackProfile","message","popupSocial","facebook","userGet","password","regex","subst","str","new_email","facebook_id","google_id","linkedin_id","google","linkedin","token","closePopupSocial","socialLink","social","payLoad","error_id","toUpperCase","replaceState","origin","connectSocial","dualScreenLeft","screenLeft","screen","left","dualScreenTop","screenTop","top","width","innerWidth","documentElement","clientWidth","height","innerHeight","clientHeight","w","encodeURIComponent","open","focus","disconnect","changeEmail","userData","cancelChange","sendEmail","codeMessage","confirmChangeEmail","bookmark","bookmarks","deleteBookmark","list_id","changeUser","bookmarkDetail","notification","messages","loadMore","concat","tag","user_tags","tagRemove","index2","inbox","projectCtrl","change","oldValue","newValue","isUndefined","admins","x","welcome_message","persona","languages","domain","colors","secondary","headerIcon","pickerS","pickerP","pickerH","pickerI","changeColors","color","css","convertHex","hex","opacity","r","substring","g","hover","updateP","set","enter","updateS","updateH","updateI","appearance","primary_color","secondary_color","header_color","header_color_icon","CP","querySelector","oncut","onpaste","onkeyup","oninput","Infinity","el","remove","dashboard","popular_tags","list_pending_articles","counts","dataset","user_list","updated","list_signed_users","article_list","list_published_articles","last1","last2","last3","last4","last5","last6","last7","last14","signups_day","signups_last_week_by_day","columns","signups_chart","c3","generate","bindto","legend","axis","tick","format","load","digest","report","month_counters","totals","month_digests","analytics","click_rate","clicks_count","users_count","home","homeCb","banner","image_mobile","url_image_mobile","external_url","alignment","text_size","posSave","integrations","facebook_app_id","google_analytics","google_console_verification_code","google_tag_manager","iugu_connected_account","linkedin_organization_id","mailchimp_list_id","mailchimp_token","rdstation_monitoring_code","rdstation_token","stripe_connected_account","mailchimpList","modal","monitoring_code","onChangeMailChimpToken","saveLinkedin","organizationId","organization_id","saveRdstation","saveGoogleAnalytics","saveGoogleTagManager","saveMailchimp","saveGoogleSearchConsole","google_console","loadingAudience","lists","footerMenu","newlink","sortableOptions","ui","signature","headerMenu","homeMessage","contentCB","footerMessage","ace","beautify","dom","commands","bindKey","editor","fullScreen","toggleCssClass","setCssClass","container","setAutoScrollEditorIntoView","resize","edit","session","setMode","setTheme","setOptions","enableBasicAutocompletion","enableSnippets","enableLiveAutocompletion","showPrintMargin","showDisplayIndentGuides","autoScrollEditorIntoView","setValue","header_content","saveData","getValue","course_creation_role","projectMonetization","projectSettingsNPS","ngInit","questions","saveQuestion","removeQuestion","updatingQuestions","updateQuestion","questions_ids_in_answering_order","questObj","questId","questionSortableOptions","out","userCtrl","is_group_adm","is_course_adm","additionalQueryParams","searchFilter_label","POSTS","ADM","EDITOR","user_filter","addUser","userTotal","userDetail","courseFilter","courseGroups","dateFormat","statistics","total_access","total_completed_classes","badgesAssigned","badgesAssignedTotal","badgesNotAssigned","badgesNotAssignedTotal","loadingBadges","classNPS","totalClassesNPS","reviewType","questionType","changeQuestion","filterQuestionSelected","question_type","changeCourse","getUserNPS","block","TXT","USER_BLOCKED","loadCourseGroups","getSummary","getBadges","badgesAssociated","badges","badgesNotAssociated","assignBadge","badge","disabled","removeBadge","userExport","exports","exporting","exportTypes","exportType","request_date","is_exported","download","export","export_type","changeExportType","selectedType","month2string","dateObj","full_month","toLocaleString","full_year","ngAnalyticsLineGraph","restrict","elements","graphId","random","toFixed","buildGraph","query","render_graph","tooltip","ratio","renderRedraw","click","flush","main","$observe","templateUrl","$inject","ngAnalyticsSingleCounter","getCounter","ngAnalyticsTrafficSource","getTrafficSource","traffic_source","translate_traffic","visits","reads","sorting","ngAnalyticsList","image_path","user_path","getList","top_landing_posts","top_posts","top_authors","top_users","top_groups","ngAnalyticsLinesCounter","label_1st","label_2nd","line","loadingCounter","icon","ngNpsCourse","platform_nps","class_nps","dynamicCtrl","RouteConfig","$location","route","config","prevUrl","change_title","header_title","responseSchema","arguments","callback","nodes","submiting","dataHandle","respHandle","String","Number","File","checkboxArray","array","material_select","characterCounter","toggleClass","goTo","ngModelCtrl","fromUser","transformedInput","$render","Routes","$routeProvider","when","hasConfig","template"],"mappings":"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","sourcesContent":["var appRoutes = {\n // Using default controller/directives\n\n // Content\n 'content/articles-detail': {\n controller: 'articleDetail',\n },\n 'content/articles-new': {\n controller: 'articleDetail',\n },\n 'content/articles': {\n controller: 'articles',\n },\n 'content/comments': {\n controller: 'comments',\n },\n 'content/comments_approval': {\n controller: 'commentApproval',\n },\n 'content/blocked': {\n controller: 'blocked',\n },\n\n // Billing\n 'billing/dashboard': {\n controller: 'billing',\n },\n 'billing/cards': {\n controller: 'card',\n },\n 'billing/invoices-detail': {\n controller: 'invoice',\n },\n 'billing/invoices': {\n controller: 'invoices',\n },\n 'billing/options': {\n controller: 'options',\n },\n 'billing/plans-detail': {\n controller: 'changePlan',\n },\n 'billing/plans': {\n controller: 'plans',\n },\n\n // Panel\n 'panel/profile': {\n controller: 'profile',\n },\n 'panel/mystats': {},\n 'panel/mytasks': {},\n 'panel/bookmarks': {\n controller: 'bookmark',\n },\n 'panel/bookmarks-detail': {\n controller: 'bookmarkDetail',\n },\n 'panel/newsletter': {},\n 'panel/notifications': {\n controller: 'notification',\n },\n 'panel/tags': {\n controller: 'tag',\n },\n 'panel/inbox': {\n controller: 'inbox',\n },\n 'panel/approval': {\n controller: 'approval',\n },\n 'panel/blocked': {},\n\n // Project\n 'project/analytics': {},\n 'project/colors': {\n controller: 'colors',\n },\n 'project/dashboard': {\n controller: 'dashboard',\n },\n 'project/digest-settings': {},\n 'project/digest': {\n controller: 'digest',\n },\n 'project/footer': {\n controller: 'footerMessage',\n },\n 'project/home-message': {\n controller: 'homeMessage',\n },\n 'project/home': {\n controller: 'home',\n },\n 'project/integrations': {\n controller: 'integrations',\n },\n 'project/menu-footer': {\n controller: 'footerMenu',\n },\n 'project/header': {\n controller: 'header',\n },\n 'project/menu-header': {\n controller: 'headerMenu',\n },\n 'project/logo': {},\n 'project/tags': {},\n 'project/project': {\n controller: 'project',\n },\n 'project/rules': {},\n 'project/settings': {\n controller: 'settings',\n },\n 'project/monetization': {\n controller: 'projectMonetization',\n },\n 'project/settings-nps': {\n controller: 'projectSettingsNPS',\n },\n\n // Group\n 'group/groups-detail': {\n controller: 'groupDetail',\n },\n 'group/groups': {\n controller: 'group',\n },\n 'group/new-group': {\n controller: 'groupNew',\n },\n\n // User\n 'user/user-export': {\n controller: 'userExport',\n },\n 'user/users-detail': {\n controller: 'userDetail',\n },\n 'user/approval': {\n controller: 'approval',\n },\n 'user/users': {\n controller: 'user',\n },\n 'user/blocked': {\n controller: 'blocked',\n },\n\n // Course\n 'course/new': {\n controller: 'new',\n },\n 'course/courses-detail': {\n controller: 'detail',\n },\n 'course/courses': {\n controller: 'list',\n },\n};\n","(function () {\n angular\n .module('app.full', ['app.main', 'ngRoute', 'ngFileUpload', 'ngImgCrop', 'angular-img-cropper', 'slugifier', 'ui.sortable', 'ngTable', 'ui.utils.masks', 'pascalprecht.translate', 'ngMask'])\n .constant('STATIC_FS', 'syscall-local')\n .constant('RouteConfig', appRoutes)\n .factory('ReqAndUpload', function ($q, Upload, Api, STATIC_FS, $window) {\n return {\n upload: function (file, scope, id) {\n var deferred = $q.defer();\n var user = $window.localStorage && $window.localStorage.getItem('session') ? JSON.parse($window.localStorage.getItem('session')) : false;\n var bcsetup = $window.localStorage && $window.localStorage.getItem('_bcsetup') ? JSON.parse($window.localStorage.getItem('_bcsetup')) : false;\n if (bcsetup && user && file && file.name != undefined) {\n var payload = {\n file_alias: file.name,\n size: file.size\n };\n var call = null;\n if (scope === 'user') call = `file?user_id=${user.user_id}`;\n else if (scope === 'project') call = `file?project_id=${bcsetup.project_id}`;\n else if (scope === 'course') call = `course/${id}/file`;\n else return false;\n Api.post(call, payload, function (err, resp) {\n if (err) {\n deferred.resolve(false);\n } else {\n var fields = resp.response.gcs_upload_data;\n var filename = resp.response.file_name;\n fields.file = file;\n if (resp.response.file_exists) {\n deferred.resolve(filename);\n } else {\n delete fields.file_exists;\n Upload.upload({\n url: 'https://' + STATIC_FS + '.storage.googleapis.com',\n data: fields\n }).then(\n function (resp) {\n deferred.resolve(filename);\n },\n function (resp) {\n deferred.resolve(false);\n },\n function (evt) {\n var progressPercentage = parseInt((100.0 * evt.loaded) / evt.total);\n }\n );\n }\n }\n });\n } else {\n deferred.resolve(false);\n }\n return deferred.promise;\n }\n };\n })\n .run(function ($http) {\n $http.defaults.headers.bcp = _bcp;\n $http.defaults.headers.Authorization = `Bearer ${window.localStorage.getItem('auth-token')}`;\n })\n .controller('appFullCtrl', function ($scope, $window, $http) {\n var user = $scope.$parent.currentUser;\n var userVerification = function () {\n if (!user && !localStorage.getItem('communitySquid/community_squid/auth-token')) {\n let queryString = unserialize(window.location.href.split('?').pop());\n if (!queryString['token']) {\n window.location.href = '/';\n }\n }\n\n if (user.pending_email_verification) {\n $window.location.href = '/';\n }\n\n $scope.progress = 0;\n };\n\n if (user) {\n userVerification();\n } else {\n $scope.$parent.syncData(function (newUser) {\n user = newUser;\n userVerification();\n });\n }\n\n $scope.$on('$viewContentLoaded', function () {\n window.scrollTo(0, 0);\n });\n\n $scope.getAddress = function (cep, model, prefix) {\n $http({\n method: 'GET',\n url: 'https://viacep.com.br/ws/' + cep + '/json/'\n }).then(function successCallback(response) {\n var fields = response.data ? response.data : false;\n if (fields.logradouro) {\n model[prefix + '_address'] = fields.logradouro.split(' - ')[0];\n model[prefix + '_city'] = fields.localidade;\n model[prefix + '_bairro'] = fields.bairro;\n model[prefix + '_uf'] = fields.uf;\n }\n });\n };\n })\n .directive('convertToNumber', function () {\n return {\n require: 'ngModel',\n link: function (scope, element, attrs, ngModel) {\n ngModel.$parsers.push(function (val) {\n return parseInt(val, 10);\n });\n ngModel.$formatters.push(function (val) {\n return '' + val;\n });\n }\n };\n });\n})();\n","var billingCtrl = (function () {\n let iuguTokenErrors = {\n number: {\n is_invalid: 'O número do cartão é inválido'\n },\n verification_value: {\n is_invalid: 'Código de segurança inválido'\n },\n first_name: {\n is_invalid: 'Nome inválido'\n },\n last_name: {\n is_invalid: 'Nome inválido'\n },\n expiration: {\n is_invalid: 'Data de vencimento inválida'\n }\n };\n\n let loadAddress = function (zipcode, scope) {\n jQuery.getJSON(`https://viacep.com.br/ws/${zipcode}/json/`, function (result) {\n scope.card.address = result.logradouro;\n scope.card.district = result.bairro;\n scope.card.state = scope.states.filter(s => result.uf && s.code.toLowerCase() === result.uf.toLowerCase())[0];\n scope.onChangeState(scope.card.state, result.localidade);\n scope.$apply();\n });\n };\n\n let getDiffDate = function (endDate) {\n let date1 = new Date();\n let date2 = new Date(endDate);\n let differenceInTime = date2.getTime() - date1.getTime();\n let differenceInDays = differenceInTime / (1000 * 3600 * 24);\n return Math.round(differenceInDays);\n };\n\n return {\n billing: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n\n Iugu.setAccountID('A0A55CE56C4D47A9B4B3F8D65385F0D7');\n Iugu.setTestMode(false);\n\n $scope.customer = null;\n $scope.subscription = null;\n $scope.changecard = true;\n $scope.projectUsesLegacyBilling = false;\n $scope.card = {\n country: null,\n state: null,\n city: null\n };\n\n $scope.countries = [];\n $scope.states = [];\n $scope.cities = [];\n\n let plansDescriptions = {\n professional: '',\n business: '',\n enterprise: ''\n };\n\n $translate([\n 'BILLING.PLANS_TITLE_1',\n 'BILLING.PLANS_TITLE_2',\n 'BILLING.PLANS_TITLE_3'\n ]).then((translations) => {\n plansDescriptions.professional = translations['BILLING.PLANS_TITLE_1'];\n plansDescriptions.business = translations['BILLING.PLANS_TITLE_2'];\n plansDescriptions.enterprise = translations['BILLING.PLANS_TITLE_3'];\n });\n\n let getInfo = function () {\n Api.get('billing/customers/payment-method', function (err, resp) {\n if (!err && resp.response.data) {\n $scope.changecard = false;\n $scope.customer = resp.response.data;\n $scope.customer.data.last_digits = $scope.customer.data.display_number.replace(/\\D/g, '')\n $scope.card = {\n id: resp.response.data.id,\n name: resp.response.data.holder_name,\n phone_number: resp.response.data.phone_prefix + resp.response.data.phone_number,\n document: resp.response.data.document_number,\n zipcode: resp.response.data.zip_code,\n district: resp.response.data.address_district,\n address: resp.response.data.address_street,\n street_number: resp.response.data.address_number,\n street_complement: resp.response.data.address_complement,\n country: {_id: resp.response.data.address_country_id},\n state: {_id: resp.response.data.address_state_id},\n city: {_id: resp.response.data.address_city_id}\n }\n }\n $scope.getCountries();\n });\n\n Api.get('billing/subscriptions/payment-information', function (err, resp) {\n if (!err) {\n $scope.subscription = resp.response.data;\n $scope.subscription.amountValue = $scope.subscription.amount_value / 100;\n $scope.currency = $scope.subscription.amount_currency === 'brl' ? 'R$' : '$';\n $scope.subscription.description = plansDescriptions[$scope.subscription.plan_name];\n } else if (err.response.error_code === 'PROJECT_USES_LEGACY_BILLING') {\n $scope.projectUsesLegacyBilling = true;\n }\n });\n };\n\n let getSurname = function (full_name) {\n const s = full_name.split(' ');\n s.shift();\n return s.join(' ');\n };\n\n let getFirstName = function (full_name) {\n return full_name.split(' ')[0];\n };\n\n $scope.restartSubscription = function () {\n Api.put('billing/subscriptions/reactivation', {}, function (err, resp) {\n if (!err) {\n getInfo();\n }\n });\n };\n\n $scope.getCountries = function () {\n Api.get('regions/countries', function (err, resp) {\n if (!err) {\n $scope.countries = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if ($scope.card.country) {\n $scope.card.country = $scope.countries.filter(c => c._id === $scope.card.country._id)[0];\n } else {\n $scope.card.country = $scope.countries.filter(c => c.name === 'Brazil')[0];\n }\n $scope.onChangeCountry($scope.card.country);\n }\n });\n };\n\n $scope.onChangeCountry = function (country) {\n if (country) {\n Api.get(`regions/subcountries?country_id=${country._id}`, function (err, resp) {\n if (!err) {\n $scope.states = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if ($scope.card.state) {\n $scope.card.state = $scope.states.filter(c => c._id === $scope.card.state._id)[0];\n $scope.onChangeState($scope.card.state);\n }\n }\n });\n }\n };\n\n $scope.onChangeState = function (state, city = '') {\n if (state) {\n Api.get(`regions/cities?subcountry_id=${state._id}`, function (err, resp) {\n if (!err) {\n $scope.cities = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if (city !== '') {\n $scope.card.city = $scope.cities.filter(c => c.name == city)[0];\n } else if ($scope.card.city) {\n $scope.card.city = $scope.cities.filter(c => c._id === $scope.card.city._id)[0];\n }\n }\n });\n }\n };\n\n let submitFormCard = function (paymentMethod, Form) {\n Api.put('billing/customers/payment-method', paymentMethod, function (err, resp) {\n if (!err) {\n $translate('BILLING.CARD_ADDED').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.card = {};\n Form.$setPristine();\n $('#addcard').closeModal();\n getInfo();\n $scope.syncData();\n } else {\n $translate('BILLING.CARD_ADD_FAIL').then(function (result) {\n App.toast(result, 3000);\n });\n }\n\n $scope.loading = false;\n });\n };\n\n $scope.add = function (card, Form) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n }\n $scope.loading = true;\n if ($scope.card.id && !$scope.changecard) {\n let paymentMethod = {\n email: $scope.currentUser.email,\n zip_code: card.zipcode,\n address_country_id: card.country._id,\n address_state_id: card.state._id,\n address_city_id: card.city._id,\n address_district: card.district,\n address_street: card.address,\n address_number: card.street_number,\n address_complement: card.street_complement,\n };\n submitFormCard(paymentMethod, Form);\n } else {\n let expires = new Date(card.expires);\n card.exp_month = expires.getMonth() + 1;\n card.exp_year = expires.getFullYear();\n\n let creditCard = Iugu.CreditCard(\n card.number,\n card.exp_month,\n card.exp_year,\n getFirstName(card.name),\n getSurname(card.name),\n card.cvc);\n\n Iugu.createPaymentToken(creditCard, function (data) {\n if (data.errors) {\n let erroMsgs = [];\n for (let prop in data.errors) {\n erroMsgs.push(iuguTokenErrors[prop][data.errors[prop]]);\n }\n App.toast(erroMsgs.join('
'), 8000);\n $scope.loading = false;\n } else {\n let paymentMethod = {\n name: card.name,\n email: $scope.currentUser.email,\n phone_prefix: card.phone_number.substr(0, 2),\n phone_number: card.phone_number.substr(2),\n document_number: card.document,\n zip_code: card.zipcode,\n address_country_id: card.country._id,\n address_state_id: card.state._id,\n address_city_id: card.city._id,\n address_district: card.district,\n address_street: card.address,\n address_number: card.street_number,\n address_complement: card.street_complement,\n card_token: data.id\n };\n submitFormCard(paymentMethod, Form);\n }\n });\n }\n };\n\n $scope.card_issuer = 'fa fa-credit-card';\n $scope.$watch('card.number', function () {\n if ($scope.card.number) {\n // Diners\n if ($scope.card.number.toString().match(/^(300|305|36|38)/)) $scope.card_issuer = 'fab fa-cc-diners-club';\n\n // Amex\n else if ($scope.card.number.toString().match(/^(34|37)/)) $scope.card_issuer = 'fab fa-cc-amex';\n\n // Visa\n else if ($scope.card.number.toString().match(/^(4)/)) $scope.card_issuer = 'fab fa-cc-visa';\n\n // Mastercard\n else if ($scope.card.number.toString().match(/^(51|55)/)) $scope.card_issuer = 'fab fa-cc-mastercard';\n\n // Discover\n else if ($scope.card.number.toString().match(/^(6011)/)) $scope.card_issuer = 'fab fa-cc-discover';\n\n // JCB\n else if ($scope.card.number.toString().match(/^(3528|3589)/)) $scope.card_issuer = 'fab fa-cc-jcb';\n\n else $scope.card_issuer = 'fa fa-credit-card';\n }\n });\n\n $scope.findZipCode = function (country, zipcode) {\n if (typeof (zipcode) === 'undefined' || typeof (country) === 'undefined') {\n return;\n }\n if (country.code !== 'BR') {\n return;\n }\n $scope.loadAddress(zipcode, $scope);\n };\n\n $scope.loadAddress = loadAddress;\n\n getInfo();\n },\n\n invoice: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams) {\n\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n\n Api.get(`billing/invoices/${$routeParams.id}/receipt`, function (err, resp) {\n if (!err) {\n $scope.invoice = resp.response.data;\n $scope.invoice.amountValue = $scope.invoice.total_amount_due_value / 100;\n $scope.invoice.currency = $scope.invoice.amount_currency === 'brl' ? 'R$' : '$';\n }\n });\n },\n\n options: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n\n let getInfo = function () {\n Api.get('billing/subscriptions/payment-information', function (err, resp) {\n if (!err) {\n $scope.subscription = resp.response.data;\n }\n });\n };\n\n getInfo();\n\n $scope.cancelSubscription = function (data, Form) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n }\n Api.put('billing/subscriptions/cancellation', data, function (resp) {\n getInfo();\n $('#unsubscribe').closeModal();\n });\n }\n\n },\n\n changePlan: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n $scope.changecard = false;\n\n Iugu.setAccountID('A0A55CE56C4D47A9B4B3F8D65385F0D7');\n Iugu.setTestMode(false);\n\n let getInfo = function () {\n Api.get('billing/customers/payment-method', function (err, resp) {\n if (!err && resp.response.data) {\n $scope.changecard = false;\n $scope.customer = resp.response.data;\n $scope.customer.data.last_digits = $scope.customer.data.display_number.replace(/\\D/g, '')\n $scope.card = {\n id: resp.response.data.id,\n name: resp.response.data.holder_name,\n phone_number: resp.response.data.phone_prefix + resp.response.data.phone_number,\n document: resp.response.data.document_number,\n zipcode: resp.response.data.zip_code,\n district: resp.response.data.address_district,\n address: resp.response.data.address_street,\n street_number: resp.response.data.address_number,\n street_complement: resp.response.data.address_complement,\n country: {_id: resp.response.data.address_country_id},\n state: {_id: resp.response.data.address_state_id},\n city: {_id: resp.response.data.address_city_id}\n }\n }\n $scope.getCountries();\n });\n };\n\n if (localStorage && localStorage.getItem('offer')) {\n $scope.OfferInvoice = JSON.parse(localStorage.getItem('offer'));\n $scope.OfferInvoice.amountValue = $scope.OfferInvoice.amount_value / 100;\n $scope.OfferInvoice.currency = $scope.OfferInvoice.amount_currency === 'brl' ? 'R$' : '$';\n }\n\n $scope.card = {\n country: null,\n state: null,\n city: null\n };\n\n $scope.countries = [];\n $scope.states = [];\n $scope.cities = [];\n\n $scope.getCountries = function () {\n Api.get('regions/countries', function (err, resp) {\n if (!err) {\n $scope.countries = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if ($scope.card.country) {\n $scope.card.country = $scope.countries.filter(c => c._id === $scope.card.country._id)[0];\n } else {\n $scope.card.country = $scope.countries.filter(c => c.name === 'Brazil')[0];\n }\n $scope.onChangeCountry($scope.card.country);\n }\n });\n };\n\n $scope.onChangeCountry = function (country) {\n if (country) {\n Api.get(`regions/subcountries?country_id=${country._id}`, function (err, resp) {\n if (!err) {\n $scope.states = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if ($scope.card.state) {\n $scope.card.state = $scope.states.filter(c => c._id === $scope.card.state._id)[0];\n $scope.onChangeState($scope.card.state);\n }\n }\n });\n }\n };\n\n $scope.onChangeState = function (state, city = '') {\n if (state) {\n Api.get(`regions/cities?subcountry_id=${state._id}`, function (err, resp) {\n if (!err) {\n $scope.cities = resp.response.data.sort(function (a, b) {\n return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);\n });\n if (city !== '') {\n $scope.card.city = $scope.cities.filter(c => c.name == city)[0];\n } else if ($scope.card.city) {\n $scope.card.city = $scope.cities.filter(c => c._id === $scope.card.city._id)[0];\n }\n }\n });\n }\n };\n\n $scope.findZipCode = function (country, zipcode) {\n if (typeof (zipcode) === 'undefined' || typeof (country) === 'undefined') {\n return;\n }\n if (country.code !== 'BR') {\n return;\n }\n $scope.loadAddress(zipcode, $scope);\n };\n\n $scope.loadAddress = loadAddress;\n\n let submitChangePlan = function (paymentMethod) {\n Api.put('project/plan', paymentMethod, function (err, resp) {\n if (!err) {\n $translate('BILLING.PLAN_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n setTimeout(function () {\n window.location.href = '#!/billing/dashboard';\n window.location.reload();\n }, 3000);\n } else {\n $translate('BILLING.PROCESS_FAIL').then(function (result) {\n App.toast(result, 3000);\n });\n }\n\n $scope.loading = false;\n });\n };\n\n let getSurname = function (full_name) {\n const s = full_name.split(' ');\n s.shift();\n return s.join(' ');\n };\n\n let getFirstName = function (full_name) {\n return full_name.split(' ')[0];\n };\n\n $scope.changePlan = function (card, Form) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n }\n $scope.loading = true;\n if ($scope.card.id && !$scope.changecard) {\n let paymentMethod = {\n offer_id: $scope.OfferInvoice.id,\n email: $scope.currentUser.email,\n zip_code: card.zipcode,\n address_country_id: card.country._id,\n address_state_id: card.state._id,\n address_city_id: card.city._id,\n address_district: card.district,\n address_street: card.address,\n address_number: card.street_number,\n address_complement: card.street_complement,\n };\n submitChangePlan(paymentMethod, Form);\n } else {\n let expires = new Date(card.expires);\n card.exp_month = expires.getMonth() + 1;\n card.exp_year = expires.getFullYear();\n\n let creditCard = Iugu.CreditCard(\n card.number,\n card.exp_month,\n card.exp_year,\n getFirstName(card.name),\n getSurname(card.name),\n card.cvc);\n\n Iugu.createPaymentToken(creditCard, function (data) {\n if (data.errors) {\n let erroMsgs = [];\n for (let prop in data.errors) {\n erroMsgs.push(iuguTokenErrors[prop][data.errors[prop]]);\n }\n App.toast(erroMsgs.join('
'), 8000);\n $scope.loading = false;\n } else {\n let paymentMethod = {\n offer_id: $scope.OfferInvoice.id,\n name: card.name,\n email: $scope.currentUser.email,\n phone_prefix: card.phone_number.substr(0, 2),\n phone_number: card.phone_number.substr(2),\n document_number: card.document,\n zip_code: card.zipcode,\n address_country_id: card.country._id,\n address_state_id: card.state._id,\n address_city_id: card.city._id,\n address_district: card.district,\n address_street: card.address,\n address_number: card.street_number,\n address_complement: card.street_complement,\n card_token: data.id\n };\n submitChangePlan(paymentMethod, Form);\n }\n });\n }\n };\n\n $scope.card_issuer = 'fa fa-credit-card';\n $scope.$watch('card.number', function () {\n if ($scope.card.number) {\n // Diners\n if ($scope.card.number.toString().match(/^(300|305|36|38)/)) $scope.card_issuer = 'fab fa-cc-diners-club';\n\n // Amex\n else if ($scope.card.number.toString().match(/^(34|37)/)) $scope.card_issuer = 'fab fa-cc-amex';\n\n // Visa\n else if ($scope.card.number.toString().match(/^(4)/)) $scope.card_issuer = 'fab fa-cc-visa';\n\n // Mastercard\n else if ($scope.card.number.toString().match(/^(51|55)/)) $scope.card_issuer = 'fab fa-cc-mastercard';\n\n // Discover\n else if ($scope.card.number.toString().match(/^(6011)/)) $scope.card_issuer = 'fab fa-cc-discover';\n\n // JCB\n else if ($scope.card.number.toString().match(/^(3528|3589)/)) $scope.card_issuer = 'fab fa-cc-jcb';\n\n else $scope.card_issuer = 'fa fa-credit-card';\n }\n });\n\n getInfo();\n },\n\n invoices: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n\n Api.get('billing/invoices', function (err, resp) {\n if (!err) {\n $scope.invoices = resp.response.data;\n }\n });\n },\n\n plans: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n if ($scope.currentUser.role !== 'ADM') {\n document.location.href = '/';\n }\n\n $scope.activeOffer = 'years';\n\n $scope.switchOffer = function (offer) {\n $scope.activeOffer = offer;\n };\n\n $scope.plans = {\n professional: {},\n business: {},\n enterprise: {}\n };\n\n $scope.subscription = {};\n\n let plansDescriptions = {\n professional: '',\n business: '',\n enterprise: ''\n };\n\n let featurePlans = {\n courses_feature_enabled: '',\n post_types_feature_enabled: '',\n newsletter_feature_enabled: '',\n own_domain_feature_enabled: '',\n analytics_feature_enabled: '',\n user_list_exportation_feature_enabled: '',\n integrations_feature_enabled: '',\n groups_feature_enabled: '',\n personal_assistance_feature_enabled: ''\n };\n\n $translate([\n 'BILLING.PLANS_TITLE_1',\n 'BILLING.PLANS_TITLE_2',\n 'BILLING.PLANS_TITLE_3',\n 'BILLING.PLANS_LIST_ITEM_1',\n 'BILLING.PLANS_LIST_ITEM_2',\n 'BILLING.PLANS_LIST_ITEM_3',\n 'BILLING.PLANS_LIST_ITEM_4',\n 'BILLING.PLANS_LIST_ITEM_5',\n 'BILLING.PLANS_LIST_ITEM_6',\n 'BILLING.PLANS_LIST_ITEM_7',\n 'BILLING.PLANS_LIST_ITEM_8',\n 'BILLING.PLANS_LIST_ITEM_9'\n ]).then((translations) => {\n plansDescriptions.professional = translations['BILLING.PLANS_TITLE_1'];\n plansDescriptions.business = translations['BILLING.PLANS_TITLE_2'];\n plansDescriptions.enterprise = translations['BILLING.PLANS_TITLE_3'];\n featurePlans.courses_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_1'];\n featurePlans.post_types_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_2'];\n featurePlans.groups_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_3'];\n featurePlans.analytics_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_4'];\n featurePlans.user_list_exportation_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_5'];\n featurePlans.newsletter_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_6'];\n featurePlans.integrations_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_7'];\n featurePlans.own_domain_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_8'];\n featurePlans.personal_assistance_feature_enabled = translations['BILLING.PLANS_LIST_ITEM_9'];\n });\n\n Api.get('plans', function (err, resp) {\n if (!err) {\n if (resp.response && resp.response.data) {\n let data = resp.response.data;\n for (let plan in $scope.plans) {\n $scope.plans[plan] = data.find(e => e.plan.name === plan);\n $scope.plans[plan].title = plansDescriptions[plan];\n if ($scope.plans[plan].offers) {\n $scope.plans[plan].offers = {\n years: $scope.plans[plan].offers.find(o => o.primary && o.interval_count === 1 && o.interval_type === 'years'),\n months: $scope.plans[plan].offers.find(o => o.primary && o.interval_count === 1 && o.interval_type === 'months')\n };\n\n for (let offer in $scope.plans[plan].offers) {\n let value = $scope.plans[plan].offers[offer].amount_value.toString();\n if (offer === 'years') {\n value = Math.round($scope.plans[plan].offers[offer].amount_value / 12).toString();\n }\n $scope.plans[plan].offers[offer].currency = $scope.plans[plan].offers[offer].amount_currency === 'brl' ? 'R$' : '$';\n $scope.plans[plan].offers[offer].amount = {\n value: value.substr(0, value.length - 2),\n centsValue: value.substr(-2)\n };\n }\n\n $scope.plans[plan].features = [];\n for (let feature in featurePlans) {\n $scope.plans[plan].features.push({\n name: featurePlans[feature],\n inactive: !$scope.plans[plan].plan[feature]\n });\n }\n }\n }\n }\n }\n });\n\n Api.get('billing/subscriptions/payment-information', function (err, resp) {\n if (!err) {\n $scope.subscription = resp.response.data;\n }\n });\n\n $scope.changePlan = function (plan) {\n if (localStorage && plan) {\n let offer = $scope.plans[plan].offers[$scope.activeOffer];\n offer.description = $scope.plans[plan].title;\n localStorage.setItem('offer', JSON.stringify(offer));\n document.location.href = `/manage.app#!/billing/plans/${plan}`;\n }\n }\n }\n }\n})();\n","var contentCtrl = (function () {\n return {\n link: function ($scope, $elm, $attrs, ngModel) {\n ngModel.$setViewValue('hi');\n },\n\n articleDetail: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n var currentTime = new Date();\n $scope.isCourse = false;\n $scope.isCourseWrite = false;\n $scope.community = false;\n $scope.isGroup = false;\n $scope.moduleId = '';\n $scope.project_id = _bcp;\n $scope.YUMMLY = \"605782caa7e0110ad6e3267b\";\n var moduleRegex = /module=[\\w\\d]+/;\n var courseIdRegex = /course_id=[^&]+/;\n var communityRegex = /community=[\\w]/;\n var getCourseModule = function () {\n Api.get(`course/${$scope.courseId}`, function (err, res) {\n if (err) {\n return false;\n }\n $scope.feed_enabled = res.response.feed_enabled;\n $scope.articles_enabled = res.response.articles_enabled;\n\n Api.get(`course_module?course_id=${$scope.courseId}&modules_only=true&status=1`, (err, ret) => {\n if (!err) {\n if ($scope.feed_enabled) {\n $scope.moduleList = ret.response.data;\n $scope.moduleSelected = $scope.moduleList.find(obj => {\n return obj.id === $scope.moduleId;\n });\n\n if ($scope.moduleSelected) {\n $scope.moduleList = $scope.moduleList.filter((value) => {\n return value.id === $scope.moduleId;\n });\n }\n }\n if (!$scope.moduleSelected && $scope.articles_enabled) {\n $translate('CONTENT.WITHOUT_MODULE').then(function (result) {\n const withoutModule = { id: '', title: result };\n if ($scope.moduleList && !$scope.isCourseWrite) {\n $scope.moduleList.unshift(withoutModule);\n } else {\n $scope.moduleList = [withoutModule];\n }\n $scope.moduleSelected = withoutModule;\n });\n }\n }\n });\n });\n }\n\n if (window.location.hash.indexOf('community') > 0) {\n $scope.community = communityRegex.exec(window.location.hash)[0].split('=')[1];\n }\n if (window.location.hash.indexOf('module') > 0) {\n $scope.moduleId = moduleRegex.exec(window.location.hash)[0].split('=')[1];\n }\n if (window.location.hash.indexOf('course_id') > 0) {\n $scope.courseId = courseIdRegex.exec(window.location.hash)[0].split('=')[1];\n $scope.isCourse = true;\n $scope.isCourseWrite = true;\n getCourseModule();\n }\n if (window.location.hash.indexOf('group') > 0) {\n $scope.isGroup = true;\n }\n $scope.total_articles = 0;\n $scope.uploading = false;\n $scope.loading = 1;\n $scope.behalf = false;\n\n $scope.article = {\n title: '',\n content: '',\n tags: [],\n content_type: $scope.params.type ? $scope.params.type : 'post',\n scheduled_date: currentTime\n }\n\n $scope.ctrlForm = {};\n\n $scope.calendar = {\n years: ['2018', '2019', '2020', '2021', '2022', '2023'],\n months: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n days: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'],\n hours: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'],\n minutes: ['00', '30'],\n };\n\n var month = currentTime.getUTCMonth() + 1; //months from 1-12\n var day = currentTime.getUTCDate();\n var year = currentTime.getUTCFullYear();\n\n var hours = currentTime.getHours();\n var minutes = currentTime.getMinutes();\n\n $scope.yearSelected = $scope.calendar.years.find(y => y == year);\n $scope.monthSelected = $scope.calendar.months.find(m => m == month);\n $scope.daySelected = $scope.calendar.days.find(d => d == day);\n $scope.hourSelected = $scope.calendar.hours.find(h => h == hours);\n $scope.minuteSelected = minutes > 30 ? $scope.calendar.minutes[1] : $scope.calendar.minutes[0];\n\n $scope.changeSelectedModule = (moduleSelected) => {\n $scope.moduleSelected = moduleSelected;\n if (moduleSelected) {\n $scope.moduleId = moduleSelected.id;\n } else {\n $scope.moduleId = '';\n }\n }\n\n $scope.changeGroup = function (group) {\n if (group && group.courseId) {\n $scope.isCourse = true;\n $scope.courseId = group.courseId;\n getCourseModule();\n } else {\n $scope.isCourse = false;\n $scope.courseId = '';\n $scope.moduleId = '';\n }\n }\n\n $scope.changeYear = function (year) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n $scope.article.scheduled_date.setYear(year);\n }\n\n $scope.changeMonth = function (month) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n $scope.article.scheduled_date.setMonth(month);\n $scope.calendar.days = [];\n for (var i = 1; i <= $scope.daysInMonth($scope.article.scheduled_date); i++) {\n $scope.calendar.days[i - 1] = `${i}`;\n }\n $scope.article.scheduled_date.setMonth(month - 1);\n $scope.daySelected = $scope.calendar.days[0];\n }\n\n $scope.changeDay = function (day) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n $scope.article.scheduled_date.setDate(day);\n }\n\n $scope.changeHour = function (hour) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n $scope.article.scheduled_date.setHours(hour, $scope.minuteSelected, 0);\n }\n\n $scope.changeMinute = function (minute) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n $scope.article.scheduled_date.setMinutes(minute);\n }\n\n $scope.daysInMonth = function (date) {\n return new Date(date.getYear(), date.getMonth(), 0).getDate();\n }\n\n $scope.canSetScheduledDate = function () {\n if ($scope.currentUser.role === 'ADM') {\n return true;\n }\n return false;\n }\n\n var ROLES = $scope.ROLES;\n\n $scope.placeholder = {\n title: '',\n content: '',\n url: ''\n }\n\n if ($scope.article.content_type == 'raw') {\n $scope.article.url_only = true;\n }\n\n $scope.changeposttitle = function () {\n $scope.article.title = $scope.article.title.replace(/<(?:.|\\n)*?>/gm, '');\n }\n\n $scope.setPlaceholder = function (contentType) {\n switch (contentType) {\n case 'question':\n $translate('CONTENT.QUESTION_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.QUESTION_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $scope.placeholder.url = '';\n break;\n\n case 'link':\n $translate('CONTENT.LINK_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.LINK_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $translate('CONTENT.LINK_PLACEHOLDER_URL').then(function (result) {\n $scope.placeholder.url = result;\n })\n break;\n\n case 'post':\n $translate('CONTENT.POST_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.POST_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $scope.placeholder.url = '';\n break;\n\n case 'list':\n $translate('CONTENT.LIST_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.LIST_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $scope.placeholder.url = '';\n break;\n\n case 'raw':\n $translate('CONTENT.PAGE_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.PAGE_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $scope.placeholder.url = '';\n break;\n case 'recipe':\n $translate('CONTENT.RECIPE_PLACEHOLDER_TITLE').then(function (result) {\n $scope.placeholder.title = result;\n });\n $translate('CONTENT.RECIPE_PLACEHOLDER_CONTENT').then(function (result) {\n $scope.placeholder.content = result;\n });\n $scope.placeholder.url = '';\n break;\n }\n }\n\n $scope.selected = function (image) {\n if (image && image.size > 15000000) {\n $translate(`MESSAGES.OVER15MB`).then(function (result) {\n App.toast(result, 3000)\n });\n $scope.article.image_cover = '';\n $scope.article.url_image_cover = '';\n return;\n }\n if (image && /image\\//.test(image.type)) $scope.url_image_cover = image;\n else {\n if (image) {\n $translate('MESSAGES.ONLY_IMAGE_FILES').then(function (result) {\n Materialize.toast(result, 3000)\n });\n }\n $scope.url_image_cover = '';\n $scope.image_cover = '';\n }\n }\n\n // Default is the current user\n var user_id = $scope.currentUser.user_id;\n\n // Get user data\n var getUserData = function (userId) {\n\n $scope.setPlaceholder($scope.article.content_type);\n\n const mainBlog = {\n id: _bcsetup.shared_posts,\n title: '',\n role: $scope.$parent.currentUser.role,\n url: `${window.location.hostname}/blog`\n }\n $translate('CONTENT.MAIN_BLOG_TITLE').then(function (result) {\n mainBlog.title = result;\n });\n Api.get(`user/get/${userId}`, function (err, ret) {\n if (!err) {\n $scope.user = ret.response;\n $scope.user.banned = $scope.user.banned == 1 ? 1 : 0;\n // Get groups\n var groups = [];\n // Check if user is ADM\n if ($scope.currentUser.role === 'ADM') {\n $scope.can_publish = true;\n }\n if (err) {\n return false;\n }\n if ($scope.user.projects) {\n var project = $scope.user.projects[$scope.$parent.project_data.key];\n var projectGroups = !$scope.community ? project.groups : '';\n if (ROLES[$scope.$parent.project_data.settings.policies.post_creation_role].value >= ROLES[project.role].value) {\n groups.push(mainBlog);\n }\n } else {\n groups.push($scope.currentUser.groups[$scope.article.page_id]);\n }\n var groupKeys = projectGroups ? Object.keys(projectGroups) : [];\n var count = 0;\n var groupCount = groupKeys.length;\n var checked = 0;\n if (groupCount == 0) {\n if (!$scope.article.hasOwnProperty('page_id')) {\n $scope.article.page_id = groups[0].id;\n }\n $scope.groups = groups;\n $scope.groupSelected = $scope.groups[checked];\n if ($scope.groupSelected && $scope.groupSelected.courseId) {\n $scope.courseId = $scope.groupSelected.courseId;\n $scope.isCourse = true;\n getCourseModule();\n }\n $scope.sharedPostOnly = $scope.groups.length === 1 && $scope.groups[checked].id === _bcsetup.shared_posts;\n $scope.can_publish = groups.length > 0 ? true : false;\n if ($scope.currentUser.role === 'ADM') {\n $scope.can_publish = true;\n }\n }\n groupKeys.forEach(function (key) {\n if (projectGroups[key].hasOwnProperty('signupPending') && projectGroups[key].signupPending === true) {\n $scope.groups = groups;\n groupCount--;\n return;\n }\n Api.get(`blogs/get/${key}`, function (err, resp) {\n count++;\n if (!err) {\n var group = resp.response;\n var item = {\n id: key,\n title: group.title,\n role: group.role,\n url: `${window.location.hostname}/${group.slug}`,\n courseId: group.course_id\n }\n if (ROLES[group.settings.policies.post_creation_role].value >= ROLES[projectGroups[key].role].value) {\n groups.push(item);\n }\n\n if (key == $scope.article.page_id) {\n checked = groups.length - 1;\n }\n }\n if (count === groupCount) {\n if (!$scope.article.hasOwnProperty('page_id')) {\n $scope.article.page_id = groups[0].id;\n }\n $scope.groups = groups;\n if ($scope.isCourse || $scope.isGroup) {\n $scope.groups = $scope.groups.filter((value, index, arr) => {\n if ($scope.params.group) {\n return value.id == $scope.params.group;\n } else return value.id == $scope.article.page_id;\n });\n }\n $scope.groupSelected = $scope.groups[checked];\n if ($scope.groupSelected && $scope.groupSelected.courseId) {\n $scope.courseId = $scope.groupSelected.courseId;\n $scope.isCourse = true;\n getCourseModule();\n }\n }\n $scope.can_publish = groups.length > 0 ? true : false;\n if ($scope.currentUser.role === 'ADM') {\n $scope.can_publish = true;\n }\n });\n });\n }\n });\n }\n\n // On new post\n if (!$scope.id) {\n\n // Post in behalf another author\n if ($scope.params.user) {\n user_id = $scope.params.user;\n $scope.behalf = true;\n }\n if ($scope.params.hasOwnProperty('group')) {\n $scope.article.page_id = $scope.params.group;\n // window.setTimeout(function() {\n // $scope.article.page_id = $scope.params.group;\n // },3000);\n }\n $scope.article.user_id = user_id;\n getUserData(user_id);\n }\n\n // After response article/get\n $scope.articleCB = function () {\n\n $scope.uploading = false;\n // Old slug, to track if will be changed\n $scope.article.old_slug = $scope.article.slug;\n $scope.oldListItens = angular.copy($scope.article.listItems);\n if ($scope.article.content_type == 'recipe') {\n $scope.oldRecipeStages = angular.copy($scope.article.recipe.stages)\n }\n\n if ($scope.article.course_id) {\n $scope.isCourse = true;\n Api.get(`course_module?course_id=${$scope.article.course_id}&modules_only=true&status=1`, (err, ret) => {\n if (!err) {\n $scope.moduleList = ret.response.data;\n $scope.moduleSelected = $scope.moduleList.find(obj => {\n return obj.id === $scope.article.course_module_id;\n });\n if (!$scope.moduleSelected) {\n $scope.moduleSelected = '';\n $scope.moduleId = '';\n } else {\n $scope.moduleId = $scope.moduleSelected.id;\n }\n }\n });\n }\n\n $scope.articleCourseVerified = true;\n\n if ($scope.article.scheduled_date) {\n if (typeof $scope.article.scheduled_date === 'string') {\n $scope.article.scheduled_date = new Date($scope.article.scheduled_date);\n }\n var month = $scope.article.scheduled_date.getUTCMonth() + 1; //months from 1-12\n var day = $scope.article.scheduled_date.getUTCDate();\n var year = $scope.article.scheduled_date.getUTCFullYear();\n\n var hours = $scope.article.scheduled_date.getHours();\n var minutes = $scope.article.scheduled_date.getMinutes();\n\n $scope.yearSelected = $scope.calendar.years.find(y => y == year);\n $scope.monthSelected = $scope.calendar.months.find(m => m == month);\n $scope.daySelected = $scope.calendar.days.find(d => d == day);\n $scope.hourSelected = $scope.calendar.hours.find(h => h == hours);\n $scope.minuteSelected = minutes > 30 ? $scope.calendar.minutes[1] : $scope.calendar.minutes[0];\n }\n if ($scope.article.publish) {\n var objDate = new Date($scope.article.publish);\n $scope.article.publish = objDate.toISOString();\n }\n\n $scope.article.url_only = $scope.article.url_only ? $scope.article.url_only : false;\n\n\n // Get user data\n getUserData($scope.article.user_id);\n\n $scope.checkIfCourseAdm();\n $scope.checkIfGroupAdm();\n $scope.checkIfGroupOwner();\n\n // Total Published\n Api.get(`article/counter?user_id=${$scope.article.user_id}&status=PUBLISHED&mode=SELF`, function (err, data) {\n if (!err) $scope.total_articles = data.response;\n });\n\n $scope.loading = 0;\n\n seoReport();\n\n // editing = false;\n\n }\n\n $scope.checkIfCourseAdm = function () {\n const userCourses = $scope.currentUser.courses;\n const articleCourseId = $scope.article.course_id;\n for (let course in userCourses) {\n if (course === articleCourseId || userCourses[course].page_id === $scope.article.page_id) {\n $scope.isUserCourseAdm = userCourses[course].role === 'ADM';\n }\n }\n\n if ($scope.isUserCourseAdm) {\n $scope.can_publish = true;\n }\n }\n\n $scope.checkIfGroupAdm = function () {\n let userGroups = [];\n const articleGroupId = $scope.article.page_id;\n Api.get(`blogs/get?mode=AUTHOR`, (err, data) => {\n if (!err) {\n userGroups.push(...data.response);\n const groupToCheck = userGroups.filter((blog) => blog.id === articleGroupId)[0];\n if (groupToCheck && groupToCheck.role === 'ADM') {\n $scope.can_publish = true;\n }\n }\n });\n }\n\n $scope.checkIfGroupOwner = function () {\n let userGroups = [];\n const articleGroupId = $scope.article.page_id;\n Api.get(`blogs/get?mode=OWNER`, (err, data) => {\n if (!err) {\n userGroups.push(...data.response);\n const groupToCheck = userGroups.filter((blog) => blog.id === articleGroupId)[0];\n if (groupToCheck && groupToCheck.role === 'ADM') {\n $scope.can_publish = true;\n }\n }\n });\n }\n\n $scope.changeContentType = function (contentType) {\n if (contentType == 'raw') {\n $scope.article.url_only = true;\n } else {\n $scope.article.url_only = false;\n }\n }\n\n $scope.changeGroupSelected = function (groupSelected) {\n $scope.isCourse = false;\n $scope.moduleList = '';\n $scope.moduleSelected = '';\n $scope.courseId = '';\n let courses = $scope.currentUser.courses;\n for (let course in courses) {\n if (courses[course].page_id === groupSelected.id) {\n $scope.courseId = course;\n break;\n }\n }\n if ($scope.courseId) {\n $scope.isCourse = true;\n Api.get(`course_module?course_id=${$scope.courseId}&modules_only=true&status=1`, (err, ret) => {\n if (!err) {\n $scope.moduleList = ret.response.data;\n // $scope.moduleSelected = $scope.moduleList[0];\n // $scope.moduleId = $scope.moduleSelected.id;\n }\n });\n }\n }\n\n // Approval\n $scope.approve = function () {\n Api.post(`article/approve/${$scope.id}`, {}, function (err, resp) {\n $scope.loadData('article/get/id', 'article', 'response', $scope.articleCB);\n });\n }\n\n // Disapproval\n $scope.disapprove = function (data) {\n var payload = {};\n payload.disapproval_motive = data.motive;\n if (data.motive == '4') payload.disapproval_motive = data.motive_other;\n Api.post(`article/disapprove/${$scope.id}`, payload, function (err, resp) {\n if (!err) {\n $('#disapproval').closeModal();\n $scope.loadData('article/get/id', 'article', 'response', $scope.articleCB);\n }\n });\n }\n\n // Unpublish\n $scope.unpublish = function () {\n Api.post(`article/unpublish/${$scope.id}`, {}, function (err, resp) {\n if (!err) {\n $scope.loadData('article/get/id', 'article', 'response', $scope.articleCB);\n }\n });\n }\n\n // Restore published version\n $scope.restore = function () {\n Api.post(`article/restore/${$scope.id}`, {\n action: ''\n }, function (err, resp) {\n if (!err) {\n $scope.loadData('article/get/id', 'article', 'response', $scope.articleCB);\n }\n });\n }\n\n // Cancel publishing\n $scope.cancel_publishing = function () {\n Api.post(`article/cancel_publishing/${$scope.id}`, {}, function (err, resp) {\n if (!err) $scope.loadData(`article/get/${$scope.id}`, 'article', 'response', $scope.articleCB);\n });\n }\n\n // Delete post\n $scope.delete = function () {\n Api.delete(`article/delete/${$scope.id}`, function (err, data) {\n if (!err) {\n setTimeout(function () {\n window.location.href = '/manage.app#!/content/articles';\n }, 2000);\n }\n });\n }\n\n // Block/unblock article\n $scope.article_update = function (prop) {\n var update = {};\n if (prop == 'banned') {\n if ($scope.article.status != -1) {\n Api.post(`article/block/${$scope.id}`, {\n id: $scope.id\n }, function (err, resp) {\n $scope.loadData(`article/get/id`, 'article', 'response', $scope.articleCB);\n });\n } else {\n Api.delete(`article/block/${$scope.id}`, function (err, resp) {\n $scope.loadData('article/get/id', 'article', 'response', $scope.articleCB);\n });\n }\n }\n }\n\n // Seo report\n $scope.seo = {\n header: 0,\n title: 0,\n url: 0,\n content: 0,\n description: 0\n }\n var seoReport = function (article) {\n if (!article) return false;\n var pagetopic = article.pagetopic ? article.pagetopic.toLowerCase().trim() : '';\n var pagetopic_slug = ''; //Slug.slugify(pagetopic);\n var article_content = article.content;\n var content = article_content ? article_content.toString().replace(/<[^>]+>|\\,|\\.|\\n|\\r/ig, '').toLowerCase().trim() : '';\n var title = article.title ? article.title.replace(/<[^>]+|\\,|\\./ig, '').toLowerCase() : '';\n var description = article.meta_description ? article.meta_description.replace(/<[^>]+|\\,|\\./ig, '').toLowerCase() : '';\n var url = article.slug ? article.slug : '';\n if (pagetopic === '') {\n $scope.seo.content = 0;\n $scope.seo.header = 0;\n $scope.seo.description = 0;\n $scope.seo.title = 0;\n $scope.seo.url = 0;\n } else {\n var pattern = new RegExp(pagetopic, 'gi');\n $scope.seo.content = (content.match(pattern) || []).length;\n $scope.seo.header = content.substr(0, 500).indexOf(pagetopic) > -1 ? 1 : 0;\n $scope.seo.description = description.indexOf(pagetopic) > -1 ? 1 : 0;\n $scope.seo.title = title.indexOf(pagetopic) > -1 ? 1 : 0;\n $scope.seo.url = url.indexOf(pagetopic_slug) > -1 ? 1 : 0;\n }\n }\n $scope.$watch('article.pagetopic', function () {\n seoReport($scope.article);\n });\n $scope.$watch('article.meta_description', function () {\n seoReport($scope.article);\n });\n $scope.$watch('article.og_title', function () {\n seoReport($scope.article);\n });\n $scope.$watch('article.slug', function () {\n seoReport($scope.article);\n });\n $scope.$watch('article.title', function () {\n // Create article url\n if ($scope.article && !$scope.article.old_slug) {\n // $scope.article.slug = Slug.slugify($scope.article.title);\n }\n seoReport($scope.article);\n });\n\n // var autoSaveTimeout;\n // var autoSaveDelay = 10000;\n // $scope.$watch('article.content', (newVal, oldVal) => {\n // clearTimeout(autoSaveTimeout);\n // if (oldVal) {\n // autoSaveTimeout = setTimeout(function() {\n // $scope.article.autoSave = true;\n // $scope.articleSave($scope.article, 'draft', $scope.ctrlForm);\n // }, autoSaveDelay);\n // }\n // });\n\n // // Save article\n $scope.articleSave = function (article, action, Form) {\n if (!article.title) {\n if (article.content_type == 'link') {\n $translate('CONTENT.ARTICLE_INVALID_LINK_TITLE').then(function (result) {\n App.toast(result, 3000)\n });\n } else if (article.content_type == 'question') {\n $translate('CONTENT.ARTICLE_INVALID_QUESTION').then(function (result) {\n App.toast(result, 3000)\n });\n } else if (article.content_type == 'recipe') {\n $translate('CONTENT.ARTICLE_INVALID_TITLE_RECIPE').then(function (result) {\n App.toast(result, 3000)\n });\n } else {\n $translate('CONTENT.ARTICLE_INVALID_TITLE').then(function (result) {\n App.toast(result, 3000)\n });\n }\n return\n } else if (article.content_type == 'link' && !article.url) {\n $translate('CONTENT.ARTICLE_INVALID_EMPTY_LINK').then(function (result) {\n App.toast(result, 3000)\n });\n return\n } else if (article.slug && /_/.test(article.slug)) {\n $translate('CONTENT.ARTICLE_INVALID_TITLE_UNDERSCORE').then(function (result) {\n App.toast(result, 3000)\n });\n return\n } else if (article.content_type === 'recipe' && (article.recipe.stages.length == 0 || article.recipe.ingredients.length == 0)) {\n \n if (article.recipe.stages.length == 0) {\n $translate('CONTENT.ARTICLE_INVALID_RECIPE_STAGES').then(function (result) {\n App.toast(result, 3000)\n });\n return\n }\n if (article.recipe.ingredients == 0) {\n $translate('CONTENT.ARTICLE_INVALID_RECIPE_INGREDIENTS').then(function (result) {\n App.toast(result, 3000)\n });\n return\n }\n \n } else if (Form.$invalid) {\n Form.$submitted = true;\n $translate('CONTENT.ARTICLE_FORM_INVALID').then(function (result) {\n App.toast(result, 3000)\n });\n throw Form;\n } else if ((!article.tags || article.tags.length == 0) && action === 'publish' && article.content_type !== 'raw' && !$scope.isCourse) {\n $('#modaltags').openModal()\n return;\n }\n\n // $scope.inputTag({ keyCode: 13 });\n $('.new-tag-field').trigger(jQuery.Event('keyup', {\n keyCode: 13,\n which: 13\n }))\n\n $scope.saving = true\n\n $('#modaltags').closeModal()\n if (!article.autoSave) {\n $('.shadow-overlay').show();\n }\n $translate('MESSAGES.SAVING').then(function (result) {\n $('.shadow-overlay').append(`${result}`);\n });\n article.action = action;\n article.type = 'blog';\n article.scheduled_date = $scope.article.scheduled_date;\n if ($scope.moduleId) {\n article.course_module_id = $scope.moduleId;\n } else if (!$scope.moduleId && $scope.isCourse) {\n article.course_module_id = null;\n } else {\n delete article.course_module_id;\n }\n delete article.course_class_id;\n $scope.uploading = true;\n let promises = [];\n if (article.content_type == 'list') {\n for (let item in article.listItems) {\n if (!$scope.oldListItens ||\n typeof ($scope.oldListItens[item]) === 'undefined' ||\n ($scope.oldListItens[item].url_image != article.listItems[item].url_image)) {\n var uploadRequest = uploadImage(item, article.listItems);\n promises.push(uploadRequest);\n }\n }\n $q.all(promises).then(function () {\n saveArticle(article, Form, Boolean(article.autoSave));\n });\n } else if (article.content_type == 'recipe') {\n // Removed local variables\n article.recipe.ingredients.forEach(function (element) {\n delete element.editable;\n delete element.unit_text;\n delete element.stage;\n });\n for (let stage in article.recipe.stages) {\n // Removed local variables\n delete article.recipe.stages[stage].editable;\n for (let item in article.recipe.stages[stage].steps) {\n if (!$scope.oldRecipeStages ||\n typeof ($scope.oldRecipeStages[stage].steps[item]) === 'undefined' ||\n (article.recipe.stages[stage].steps[item].url_image && ($scope.oldRecipeStages[stage].steps[item].url_image != article.recipe.stages[stage].steps[item].url_image))) {\n var uploadRequest = uploadImage(item, article.recipe.stages[stage].steps);\n promises.push(uploadRequest);\n }\n }\n }\n $q.all(promises).then(function () {\n saveArticle(article, Form, Boolean(article.autoSave));\n });\n \n } else {\n saveArticle(article, Form, Boolean(article.autoSave));\n }\n }\n\n const saveArticle = function (article, Form, isAutoSave) {\n if (typeof article.scheduled_date === 'string') {\n article.scheduled_date = new Date(article.scheduled_date);\n }\n const now = new Date(Date.now());\n var apiCall = 'article/save'\n if ($scope.id) apiCall = `article/save/${$scope.id}`\n $scope.save(article, apiCall, Form, 'POST', function (response) {\n $scope.saving = false\n $scope.id = response.article.id\n $scope.loading = 2\n if ($scope.currentUser.role === 'ADM' && article.action === 'publish') {\n const msg = article.scheduled_date > now ? 'OK_SCHEDULED' : 'OK_PUBLISH'\n $translate(`MESSAGES.${msg}`).then(function (result) {\n $('.shadow-overlay').empty().append(`${result}`);\n window.setTimeout(function () {\n window.history.back();\n }, 3000);\n });\n } else {\n var text = ''\n if (article.action === 'publish') {\n if (response.article.status === 0){\n $translate('MESSAGES.WAIT_FOR_YOUR_POST').then(function (result) {\n text += result + '
';\n $translate('MESSAGES.WAIT_FOR_YOUR_POST_2').then(function (result) {\n text += result;\n $('.shadow-overlay').empty().append(`${text}`);\n window.setTimeout(function () {\n window.history.back();\n }, 3000);\n });\n });\n }else{\n $translate('MESSAGES.OK_PUBLISH').then(function (result) {\n text += result;\n $('.shadow-overlay').empty().append(`${text}`);\n window.setTimeout(function () {\n window.history.back();\n }, 3000);\n });\n }\n return;\n }\n $('.shadow-overlay').hide();\n if (isAutoSave) {\n $scope.articleCB();\n } else {\n $scope.loadData(`article/get/${$scope.id}`, 'article', 'response', $scope.articleCB)\n }\n }\n },\n undefined\n , function () {\n $translate('GLOBAL.ERROR').then((result) => App.toast(result, 5000));\n $('.shadow-overlay').hide();\n $scope.saving = false\n $scope.loading = 2\n $scope.uploading = false;\n })\n };\n const uploadImage = function (field, list) {\n var deferred = $q.defer();\n var path = 'project';\n ReqAndUpload.upload(list[field].image, path).then(function (filename) {\n list[field].url_image = `${bcp.static_path}/m/images/${filename}`;\n list[field].image = filename;\n deferred.resolve(true);\n });\n return deferred.promise;\n };\n },\n\n articles: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http) {\n $scope.commentsCtrl = {};\n window.contentCtrl.comments($scope.commentsCtrl, Api, NgTableParams, ReqAndUpload, $q, $translate, $http);\n\n $scope.total_articles = 0;\n $scope.uploading = false;\n $scope.loading = 1;\n $scope.behalf = false;\n\n $scope.searchStatus = 'PUBLISHED';\n $scope.page_label = '';\n $scope.author_label = '';\n $scope.author_id = '';\n $scope.group_id = '';\n\n if ($scope.params.author) {\n $scope.user_id = $scope.params.author;\n $scope.searchMode = 'ALL';\n Api.get(`user/${$scope.user_id}`, function (err, resp) {\n if (!err) $scope.author_label = resp.response.name;\n });\n $('ul.tabs').tabs('select_tab', 'tab2');\n } else if ($scope.params.group) {\n $scope.page_id = $scope.params.group;\n $scope.searchMode = 'ALL';\n Api.get(`blogs/get/${$scope.page_id}`, function (err, resp) {\n if (!err) $scope.page_label = resp.response.title;\n });\n $('ul.tabs').tabs('select_tab', 'tab2');\n } else if ($scope.params.mode === 'pending') {\n $scope.searchMode = 'PENDING';\n $scope.searchStatus = 'PENDING';\n $('ul.tabs').tabs('select_tab', 'tab3');\n } else if ($scope.params.mode === 'all') {\n $scope.searchMode = 'ALL';\n $('ul.tabs').tabs('select_tab', 'tab2');\n } else {\n $scope.searchMode = 'SELF';\n $('ul.tabs').tabs('select_tab', 'tab1');\n }\n\n $scope.filter_label = '';\n\n $scope.searchMode_label = {\n 'SELF': '',\n 'PENDING': '',\n 'ALL': '',\n 'PAGES': ''\n }\n $translate('CONTENT.SEARCH_MODE_SELF').then(function (result) {\n $scope.searchMode_label.SELF = result;\n });\n $translate('CONTENT.SEARCH_MODE_PENDING').then(function (result) {\n $scope.searchMode_label.PENDING = result;\n });\n $translate('CONTENT.SEARCH_MODE_ALL').then(function (result) {\n $scope.searchMode_label.ALL = result;\n });\n $translate('CONTENT.SEARCH_MODE_PAGES').then(function (result) {\n $scope.searchMode_label.PAGES = result;\n });\n $scope.searchStatus_label = {\n 'PUBLISHED': '',\n 'SCHEDULED': '',\n 'DRAFT': '',\n 'DISAPPROVED': '',\n 'PENDING': '',\n 'ALL': '',\n 'COMMUNITY': '',\n 'GROUPS': '',\n 'ADMGROUPS': '',\n 'NOADMGROUPS': '',\n }\n $translate('CONTENT.SEARCH_STATUS_PUBLISHED').then(function (result) {\n $scope.searchStatus_label.PUBLISHED = result;\n });\n $translate('CONTENT.SEARCH_STATUS_SCHEDULED').then(function (result) {\n $scope.searchStatus_label.SCHEDULED = result;\n });\n $translate('CONTENT.SEARCH_STATUS_DRAFT').then(function (result) {\n $scope.searchStatus_label.DRAFT = result;\n });\n $translate('CONTENT.SEARCH_STATUS_DISAPPROVED').then(function (result) {\n $scope.searchStatus_label.DISAPPROVED = result;\n });\n $translate('CONTENT.SEARCH_STATUS_PENDING').then(function (result) {\n $scope.searchStatus_label.PENDING = result;\n });\n $translate('CONTENT.SEARCH_STATUS_ALL').then(function (result) {\n $scope.searchStatus_label.ALL = result;\n });\n $translate('CONTENT.SEARCH_STATUS_COMMUNITY').then(function (result) {\n $scope.searchStatus_label.COMMUNITY = result;\n });\n $translate('CONTENT.SEARCH_STATUS_GROUPS').then(function (result) {\n $scope.searchStatus_label.GROUPS = result;\n });\n $translate('CONTENT.SEARCH_STATUS_ADMGROUPS').then(function (result) {\n $scope.searchStatus_label.ADMGROUPS = result;\n });\n $translate('CONTENT.SEARCH_STATUS_NOADMGROUPS').then(function (result) {\n $scope.searchStatus_label.NOADMGROUPS = result;\n });\n $scope.searchFilter = {\n mode: $scope.searchMode,\n status: $scope.searchStatus,\n content_type: 'no_raw',\n filter: '',\n\n page_id: $scope.page_id ? $scope.page_id : '',\n user_id: $scope.user_id ? $scope.user_id : ''\n }\n\n $scope.next = function (page, filter) {\n page++;\n $scope.listPosts(page, filter);\n }\n\n $scope.changeMode = function (mode) {\n if ($scope.searchMode === mode) return false;\n $scope.searchMode = mode;\n if (mode == 'SELF') $scope.searchStatus = 'PUBLISHED';\n else if (mode == 'PENDING') $scope.searchStatus = 'COMMUNITY';\n else if (mode == 'ALL') $scope.searchStatus = 'ALL';\n else if (mode == 'PAGES') $scope.searchStatus = 'ALL';\n else $scope.searchStatus = '';\n\n $scope.searchFilter.user_id = '';\n $scope.searchFilter.page_id = '';\n $scope.author_label = '';\n $scope.page_label = '';\n $('#keywords').val('');\n\n $scope.searchFilter = {\n mode: mode,\n status: $scope.searchStatus,\n content_type: 'no_raw',\n filter: '',\n user_id: '',\n page_id: ''\n }\n if (mode == 'COMMENTS') {\n $scope.commentsCtrl.list(1, 'my_comments', { value: $scope.commentsCtrl.status[0] }, 'articles');\n } else {\n if (mode == 'PAGES') {\n $scope.searchFilter = {\n mode: 'SELF',\n content_type: 'raw',\n filter: ''\n }\n $scope.listRaws(1, $scope.searchFilter);\n } else {\n $scope.listPosts(1, $scope.searchFilter);\n }\n }\n }\n\n $scope.changeFilter = function (filter) {\n if (filter === 'SCHEDULED') {\n $scope.searchFilter.sort_field = 'scheduled_date';\n $scope.searchFilter.sort_order = 'ASC';\n } else {\n delete $scope.searchFilter.sort_field;\n delete $scope.searchFilter.sort_order;\n }\n $scope.searchStatus = filter;\n $scope.searchFilter.status = filter;\n $scope.listPosts(1, $scope.searchFilter);\n }\n\n $scope.search = function (kw) {\n $scope.filter_label = 'filtrados';\n $scope.searchFilter.filter = kw;\n $scope.listPosts(1, $scope.searchFilter);\n }\n\n $scope.articles = false;\n var requestPost = false;\n\n $scope.listPosts = function (page, filter) {\n if (requestPost) {\n requestPost.cancel();\n }\n\n if (filter.mode === 'PENDING' && $scope.currentUser.role !== 'ADM') {\n filter.status = 'ADMGROUPS'\n }\n\n if (!page) page = 1;\n $scope.articles = false;\n\n var list_filter = filter;\n $scope.last = true;\n $scope.currentPage = page;\n requestPost = Api.get(`article/list?page_size=10&page=${page}&${$.param(list_filter)}`, function (err, resp) {\n requestPost = false;\n if (!err) {\n $scope.noresults = resp.response.data.length > 0 ? false : true;\n $scope.articles = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n $scope.last = resp.response.total == $scope.articles.length ? true : false;\n }\n });\n if (\n $scope.searchFilter.page_id !== '' ||\n $scope.searchFilter.user_id !== '' ||\n $scope.searchFilter.filter !== ''\n ) {\n $translate('CONTENT.FILTER_LABEL').then(function (result) {\n $scope.filter_label = result;\n });\n } else {\n $scope.filter_label = '';\n }\n }\n\n $scope.listRaws = function (page, filter) {\n if (!page) page = 1;\n $scope.articles = false;\n\n var list_filter = filter;\n\n $scope.last = true;\n $scope.currentPage = page;\n Api.get(`article/list?page_size=10&page=${page}&${$.param(list_filter)}`, function (err, resp) {\n if (!err) {\n $scope.noresults = resp.response.data.length > 0 ? false : true;\n $scope.articles = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n $scope.last = resp.response.total == $scope.articles.length ? true : false;\n }\n });\n }\n\n $scope.changeGroup = function (group) {\n $scope.page_label = group && group.label ? group.label : '';\n $scope.group_id = group && group.id ? group.id : '';\n $scope.searchFilter.page_id = $scope.group_id;\n $scope.listPosts(1, $scope.searchFilter);\n };\n $scope.changeAuthor = function (author) {\n $scope.author_label = author && author.label ? author.label : '';\n $scope.author_id = author && author.id ? author.id : '';\n $scope.searchFilter.user_id = $scope.author_id;\n $scope.listPosts(1, $scope.searchFilter);\n };\n\n // Delete post\n $scope.delete = function (id) {\n Api.delete(`article/delete/${id}`, function (err, data) {\n if (!err) {\n $translate(`MESSAGES.${data.response}`).then(function (result) {\n App.toast(result, 3000)\n });\n $scope.listPosts($scope.currentPage, $scope.searchFilter);\n }\n });\n }\n\n // Post Counters\n $scope.counters = {\n 'SELF/PUBLISHED/no_raw': 0,\n 'SELF/SCHEDULED/no_raw': 0,\n 'SELF/DRAFT/no_raw': 0,\n 'SELF/DISAPPROVED/no_raw': 0,\n 'SELF/PENDING/no_raw': 0,\n 'ALL/ALL/': 0,\n 'ALL/COMMUNITY/': 0,\n 'ALL/SCHEDULED/': 0,\n 'ALL/GROUPS/': 0,\n 'PENDING/ALL/': 0,\n 'PENDING/ADMGROUPS/': 0,\n 'PENDING/NOADMGROUPS/': 0,\n 'PENDING/COMMUNITY/': 0,\n 'SELF/ALL/raw': 0\n }\n\n var counter = function (key) {\n var arr = key.split('/');\n var mode = arr[0],\n status = arr[1],\n type = arr[2];\n Api.get(`article/counter?mode=${mode}&status=${status}&content_type=${type}`, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n }\n\n for (var key in $scope.counters) counter(key);\n\n $scope.listPosts(1, $scope.searchFilter);\n },\n\n blocked: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n $scope.filter_label = '';\n $scope.searchFilter = {\n mode: 'ALL',\n status: 'BLOCKED',\n filter: ''\n }\n\n $scope.contentTotal = 0;\n Api.get(`article/counter?mode=ALL&status=BLOCKED`, function (err, resp) {\n if (!err) $scope.contentTotal = resp.response;\n });\n\n $scope.next = function (page, filter) {\n page++;\n $scope.listPosts(page, filter);\n }\n\n $scope.search = function (kw) {\n $translate('CONTENT.FILTER_LABEL').then(function (result) {\n $scope.filter_label = result;\n });\n $scope.searchFilter.filter = kw;\n $scope.listPosts(1, $scope.searchFilter);\n }\n\n $scope.articles = false;\n $scope.listPosts = function (page, filter) {\n if (!page) page = 1;\n $scope.articles = false;\n\n var list_filter = filter;\n\n $scope.last = true;\n $scope.currentPage = page;\n Api.get(`article/list?page_size=10&page=${page}&${$.param(list_filter)}`, function (err, resp) {\n if (!err) {\n $scope.noresults = resp.response.data.length > 0 ? false : true;\n $scope.articles = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n $scope.last = resp.response.total == $scope.articles.length ? true : false;\n }\n });\n if ($scope.searchFilter.filter !== '') {\n $translate('CONTENT.FILTER_LABEL').then(function (result) {\n $scope.filter_label = result;\n });\n } else {\n $scope.filter_label = '';\n }\n }\n\n\n $scope.listPosts(1, $scope.searchFilter);\n\n },\n\n commentApproval: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n $scope.comments = false;\n $scope.change_comments = [];\n\n $scope.page = 1;\n $scope.total = 0;\n $scope.pages = 0;\n\n $scope.status = [{\n title: '',\n value: '2'\n }];\n\n $translate('GLOBAL.STATUS_PENDING').then(function (result) {\n $scope.status.title = result;\n });\n\n $scope.commentFilter_label = {\n 'in_my_content': '',\n 'all': ''\n }\n $translate('CONTENT.IN_MY_CONTENT').then(function (result) {\n $scope.commentFilter_label['in_my_content'] = result;\n });\n $translate('CONTENT.ALL_COMENT').then(function (result) {\n $scope.commentFilter_label['all'] = result;\n });\n $scope.commentStatus_label = {\n '2': ''\n }\n\n $translate('GLOBAL.STATUS_PENDING').then(function (result) {\n $scope.commentStatus_label['2'] = result;\n });\n\n $scope.list = function (page, filter, status) {\n $scope.comments = false;\n $scope.commentStatus = status;\n $scope.commentFilter = filter;\n $scope.change_comments = [];\n $scope.page = page;\n Api.get(`comment?page=${page}&page_size=10&scope=${filter}&status=${status}&collection=articles&replies_as_children=false`, function (err, resp) {\n if (!err) {\n $scope.comments = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n }\n });\n }\n $scope.list(1, 'in_my_content', '2');\n\n // Comment Counters\n $scope.counters = {\n 'in_my_content/2': 0,\n 'all/2': 0\n }\n var counter = function (key) {\n var arr = key.split('/');\n var filter = arr[0],\n status = arr[1];\n Api.get(`comment?return_as=count&scope=${filter}&status=${status}&collection=articles`, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n }\n\n for (var key in $scope.counters) counter(key);\n\n // Change comment status\n $scope.changeStatus = function (input, state) {\n var comments = [];\n if (Array.isArray(input)) {\n for (var i in input) {\n $scope.comments[input[i]].status = state;\n comments.push({\n _id: $scope.comments[input[i]].id,\n status: state\n });\n }\n } else {\n $scope.comments[input].status = state;\n comments = [{\n _id: $scope.comments[input].id,\n status: state\n }];\n }\n Api.put('comment', {\n comments: comments\n }, function (err, resp) {\n $translate(`CONTENT.ARTICLE_CHANGE_STATUS_SUCCESS`).then(function (result) {\n App.toast(result, 3000)\n });\n $scope.list(1, $scope.commentFilter, $scope.commentStatus, $scope.commentCollection);\n for (var key in $scope.counters) counter(key);\n });\n }\n\n $scope.manageStatus = function (index) {\n if ($scope.change_comments.indexOf(index) === -1) $scope.change_comments.push(index);\n else $scope.change_comments.splice($scope.change_comments.indexOf(index), 1);\n $scope.markAll = $scope.change_comments.length == 0 ? false : true;\n }\n $scope.markAll = false;\n // Mark All\n $('body').delegate('#markAll', 'change', function () {\n if ($(this).is(':checked')) {\n $('.check-item input:not(:checked)').each(function () {\n $(this).parents('.check-item:eq(0)').find('label').trigger('click');\n });\n } else {\n $('.check-item input:checked').each(function () {\n $(this).parents('.check-item:eq(0)').find('label').trigger('click');\n });\n }\n });\n\n },\n\n comments: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n $scope.comments = false;\n $scope.change_comments = [];\n\n $scope.page = 1;\n $scope.total = 0;\n $scope.pages = 0;\n\n $scope.status = [{\n title: '',\n value: 1\n },\n {\n title: '',\n value: 0\n }\n ];\n $translate('GLOBAL.STATUS_PUBLISH').then(function (result) {\n $scope.status[0].title = result;\n });\n $translate('GLOBAL.STATUS_HIDEN').then(function (result) {\n $scope.status[1].title = result;\n });\n $scope.commentStatus = {\n value: $scope.status[0]\n };\n\n $scope.commentFilter_label = {\n 'my_comments': '',\n 'in_my_content': '',\n 'all': ''\n }\n $translate('CONTENT.MY_COMMENTS').then(function (result) {\n $scope.commentFilter_label['my_comments'] = result;\n });\n $translate('GLOBAL.COMENTS_IN_MY_CONTENT').then(function (result) {\n $scope.commentFilter_label['in_my_content'] = result;\n });\n $translate('GLOBAL.ALL_COMENTS').then(function (result) {\n $scope.commentFilter_label['all'] = result;\n });\n\n $scope.commentStatus_label = {\n '1': 'publicados',\n '0': 'ocultados'\n }\n $translate('GLOBAL.STATUS_PUBLISH').then(function (result) {\n $scope.commentStatus_label['1'] = result;\n });\n $translate('GLOBAL.STATUS_HIDEN').then(function (result) {\n $scope.commentStatus_label['0'] = result;\n });\n\n $scope.list = function (page, filter, status, collection) {\n $scope.comments = false;\n $scope.commentFilter = filter;\n $scope.commentCollection = collection;\n $scope.commentStatus.value = status.value;\n $scope.change_comments = [];\n $scope.page = page;\n Api.get(`comment?page=${page}&page_size=10&scope=${filter}&status=${status.value.value}&replies_as_children=false&collection=${collection}`, function (err, resp) {\n if (!err) {\n $scope.comments = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n }\n });\n }\n $scope.list(1, 'my_comments', $scope.commentStatus, 'articles');\n\n // Comment Counters\n $scope.counters = {\n 'my_comments/1/articles': 0,\n 'my_comments/1/classes': 0,\n 'in_my_content/1/articles': 0,\n 'all/1/articles': 0,\n 'all/1/classes': 0\n }\n var counter = function (key) {\n var arr = key.split('/');\n var filter = arr[0],\n status = arr[1],\n collection = arr[2];\n Api.get(`comment?return_as=count&scope=${filter}&status=${status}&collection=${collection}`, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n }\n\n for (var key in $scope.counters) counter(key);\n\n // Change comment status\n $scope.changeStatus = function (input, state) {\n var comments = [];\n if (Array.isArray(input)) {\n for (var i in input) {\n $scope.comments[input[i]].status = state;\n comments.push({\n _id: $scope.comments[input[i]].id,\n status: state\n });\n }\n } else {\n $scope.comments[input].status = state;\n comments = [{\n _id: $scope.comments[input].id,\n status: state\n }];\n }\n Api.put('comment', {\n comments: comments\n }, function (err, resp) {\n $translate(`CONTENT.ARTICLE_CHANGE_STATUS_SUCCESS`).then(function (result) {\n App.toast(result, 3000)\n });\n $scope.list(1, $scope.commentFilter, $scope.commentStatus, $scope.commentCollection);\n for (var key in $scope.counters) counter(key);\n });\n }\n\n $scope.manageStatus = function (index) {\n if ($scope.change_comments.indexOf(index) === -1) $scope.change_comments.push(index);\n else $scope.change_comments.splice($scope.change_comments.indexOf(index), 1);\n $scope.markAll = $scope.change_comments.length == 0 ? false : true;\n }\n $scope.markAll = false;\n // Mark All\n $('body').delegate('#markAll', 'change', function () {\n if ($(this).is(':checked')) {\n $('.check-item input:not(:checked)').each(function () {\n $(this).parents('.check-item:eq(0)').find('label').trigger('click');\n });\n } else {\n $('.check-item input:checked').each(function () {\n $(this).parents('.check-item:eq(0)').find('label').trigger('click');\n });\n }\n });\n\n }\n }\n})();\n","var courseCtrl = (function () {\n return {\n list: function ($scope, Api) {\n $scope.courses = false;\n $scope.currentPage = 1;\n $scope.searchKw = '';\n $scope.searchMode = 'participating';\n $scope.total = 0;\n\n $scope.participatingCoursesCounter = 0;\n $scope.administratingCoursesCounter = 0;\n $scope.allCoursesCounter = 0;\n\n var requestCounters = function () {\n Api.get(`course?scope=participating&return_as=count`, function (err, resp) {\n if (!err) $scope.participatingCoursesCounter = resp.response;\n });\n\n Api.get(`course?scope=administrating&return_as=count`, function (err, resp) {\n if (!err) $scope.administratingCoursesCounter = resp.response;\n });\n\n Api.get(`course?scope=all&return_as=count`, function (err, resp) {\n if (!err) $scope.allCoursesCounter = resp.response;\n });\n };\n\n requestCounters();\n\n $scope.list = function (page, kw, mode) {\n $scope.blogs = false;\n $scope.currentPage = page;\n $scope.searchKw = kw;\n $scope.searchMode = mode;\n Api.get(`course?page=${page}&page_size=10&filter=${kw}&scope=${mode}`, function (err, resp) {\n if (!err) {\n $scope.courses = resp.response.data;\n $scope.total = resp.response.total;\n }\n });\n };\n\n $scope.redirectCourses = function () {\n window.location.href = '/courses';\n };\n\n // Change role\n $scope.course_exit = function (course_id) {\n Api.delete(`courses/${course_id}/users/${$scope.currentUser.user_id}/enrollment`, function (err, resp) {\n $scope.list(1, $scope.searchKw, $scope.searchMode);\n requestCounters();\n });\n };\n\n $scope.list(1, $scope.searchKw, $scope.searchMode);\n },\n\n new: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.preSave = function (payload) {\n if (payload.hasOwnProperty('category_id') && payload.category_id.length < 24) delete payload.category_id;\n };\n\n $scope.callbackSave = function (resp) {\n if (resp.status === 200) {\n var course_id = resp.response.course_id;\n window.location.href = `/manage.app#!/course/courses/${course_id}`;\n }\n };\n\n $scope.callbackError = function (error, ret) {\n if (ret.response && ret.response.error_code === 'COURSE_SLUG_ALREADY_EXISTS') {\n $translate('MESSAGES.COURSE_SLUG_ALREADY_EXISTS').then((result) => App.toastError(result, 5000));\n return;\n }\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n };\n },\n\n detail: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n var isAdmin = $scope.currentUser && ($scope.currentUser.role === 'ADM' || ($scope.currentUser.courses && $scope.currentUser.courses[$scope.id] && $scope.currentUser.courses[$scope.id].role === 'ADM'));\n\n var apiPathmonetization = 'monetization/iugu/products';\n\n var yScrollPosition = 0;\n\n var courseId = $scope.id;\n $scope.courseloading = 1;\n $scope.currentTab = 'tab1';\n $scope.monetizations = [];\n $scope.slug = null;\n $scope.user_searching = false;\n $scope.loadingUserStatistics = false;\n $scope.userStatistics = {\n total_users: 0,\n completion_rate: 0,\n progress_avg: 0\n };\n\n document.addEventListener('DOMContentLoaded', function () {\n var elems = document.querySelectorAll('.collapsible');\n var instances = M.Collapsible.init(elems, options);\n });\n\n // Or with jQuery\n\n $(document).ready(function () {\n $('.collapsible').collapsible();\n });\n\n $scope.accountMonetization = '';\n $scope.newAccountMonetization = false;\n\n Api.get(`course/${courseId}/monetization-account`, function (err, ret) {\n if (!err) {\n $scope.accountMonetization = ret.response.data;\n }\n });\n // Show user data from item select on suggest input\n $scope.preAddUserMonetization = function (user) {\n Api.get(`user/get/${user.id}`, function (err, data) {\n $scope.accountMonetization = {\n account_id: user.accountId,\n user_id: data.response._id,\n user_name: data.response.name,\n user_email: data.response.email,\n user_slug: data.response.slug,\n user_image: data.response.image,\n company_document: user.companyDocument,\n company_name: user.companyName\n };\n $scope.newAccountMonetization = true;\n });\n };\n\n $scope.saveMonetization = function () {\n const data = {\n target_monetization_account_id: $scope.accountMonetization.account_id\n };\n Api.put(`course/${courseId}/monetization-account`, data, function (err, ret) {\n if (err) {\n $scope.accountMonetization = '';\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 8000));\n return;\n }\n $translate('MESSAGES.OK_DEFAULT').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.newAccountMonetization = false;\n });\n };\n\n $scope.removeMonetizationAccount = function () {\n const data = {\n target_monetization_account_id: null\n };\n const dataCourse = {\n signup_policy: 0\n };\n Api.put(`course/${courseId}/monetization-account`, data, function (err, ret) {\n if (err) {\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 8000));\n return;\n }\n Api.put(`course/${courseId}`, dataCourse, function (err, data) {\n if (!err) {\n $translate('MESSAGES.OK_DEFAULT').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.course.signup_policy = 0;\n $scope.accountMonetization = '';\n }\n });\n });\n };\n\n $('#user_search').autocomplete({\n search: function () {\n $scope.user_searching = true;\n },\n response: function () {\n $scope.user_searching = false;\n }\n });\n\n $scope.clearMonetizationAffiliate = function () {\n $scope.newUser = false;\n };\n\n $scope.FilterCurrencyLevel = function (item) {\n return item.currency === 'brl';\n };\n\n // Save URL Hotmart\n $scope.saveUrlHotmart = function (urlHotmart) {\n Api.post(\n `webhook/hotmart/custom-purchase-url`,\n {\n custom_purchase_url: urlHotmart,\n courseId: courseId\n },\n function (err, ret) {\n if (err) {\n $translate('COURSE.EDIT_URL_ADDED_ERROR').then(function (result) {\n App.toast(result, 3000);\n });\n return;\n }\n if (!err && ret) {\n $translate('COURSE.EDIT_URL_ADDED').then(function (result) {\n App.toast(result, 3000);\n });\n }\n }\n );\n };\n\n // For mobile change tabs\n $scope.changeTab = function (tab) {\n $('ul.tabs').tabs('select_tab', tab);\n };\n\n // editing = false;\n\n // Get course data\n Api.get(`course/${courseId}`, function (err, data) {\n if (!err) {\n $scope.course = data.response;\n $scope.courseloading = 0;\n $scope.project_id = $scope.course.project_id;\n $scope.showMonetizationTabs = $scope.currentUser.stripe_connected_account_id && ($scope.course.signup_policy === 3 || $scope.course.signup_policy === 0);\n $scope.getAllPricingForCurrentCourse(data.response.slug);\n }\n });\n\n // Get User statistics\n $scope.loadingUserStatistics = true;\n Api.get(`courses/${courseId}/statistics/summary`, function (err, ret) {\n if (!err) {\n $scope.userStatistics = ret.response.data;\n }\n $scope.loadingUserStatistics = false;\n });\n\n //Get count student statistics\n $scope.userCountStatistics = 0;\n $scope.loadingUserCountStatistics = true;\n Api.get(`course/${courseId}/users/?return_as=count&signup_pending=false&role=USR`, function (err, ret) {\n if (!err) {\n $scope.userCountStatistics = ret.response.data;\n }\n $scope.loadingUserCountStatistics = false;\n });\n\n $scope.getAllPricingForCurrentCourse = function (slug) {\n $scope.slug = slug;\n Api.get(`${apiPathmonetization}/course/${courseId}`, function (err, data) {\n if (!err) {\n $scope.monetizations = data.response.data.products.filter((p) => p.enabled);\n }\n });\n };\n\n // NPS Search\n $scope.filterDateNpsIni = ''; \n $scope.filterDateNpsEnd = '';\n $scope.filterNpsSelected = '';\n $scope.questionsNPS = [];\n $scope.currentPageNPS = 1;\n $scope.totalClassesNps = 0;\n $scope.modulesNPS = [];\n $scope.courseNPS = 0;\n $scope.courseReviews = 0;\n $scope.loadingNPS = false;\n\n var today = new Date();\n var initialDate = new Date(new Date().setDate(today.getDate() - 30));\n\n var endDateNps = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 20, 59, 59);\n var iniDateNps = new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate(), 21, 0, 0);\n\n $scope.filterDateNpsIni = iniDateNps.toISOString();\n $scope.filterDateNpsEnd = endDateNps.toISOString();\n\n $scope.getAllNps = function (page, pageSize, dateIni, dateEnd) {\n let circleBox = document.body.style;\n $scope.loadingNPS = true;\n if ($scope.lang === 'pt-br' && dateIni && typeof dateIni === 'string') {\n dateIni = new Date(dateIni.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n dateIni = dateIni.toISOString();\n }\n if ($scope.lang === 'pt-br' && dateEnd && typeof dateEnd === 'string') {\n dateEnd = new Date(dateEnd.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n dateEnd = dateEnd.toISOString();\n }\n Api.get(`user_experience_review/net_promoter_score/questions/${$scope.filterNpsSelected}/?start_date=${dateIni}&end_date=${dateEnd}&course_id=${courseId}&page=${page}&page_size=${pageSize}`, function (err, ret) {\n if (!err) {\n $scope.totalClassesNps = ret.response.data.total_classes;\n $scope.modulesNPS = ret.response.data.modules;\n $scope.courseNPS = ret.response.data.summary ? ret.response.data.summary.nps : null;\n $scope.courseReviews = ret.response.data.summary ? ret.response.data.summary.total_reviews : null;\n circleBox.setProperty('--NPS', $scope.courseNPS);\n }\n $scope.loadingNPS = false;\n });\n };\n\n $scope.changeNpsQuestion = function (filterNpsSelected) {\n $scope.filterNpsSelected = filterNpsSelected;\n };\n\n $scope.getQuestionsNPS = function () {\n Api.get('custom-survey-questions/lightweight/nps', function (err, ret) {\n if (!err) {\n $scope.questionsNPS = ret.response.data;\n }\n });\n };\n\n $scope.getQuestionsNPS();\n\n $scope.searchNps = function (Form, currentPageNPS, pageSize, filterDateNpsIni, filterDateNpsEnd) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n } else {\n return $scope.getAllNps(currentPageNPS, pageSize, filterDateNpsIni, filterDateNpsEnd);\n }\n };\n\n // NPS Search by class\n $scope.courseId = $scope.id;\n $scope.classTitle = '';\n $scope.classId = '';\n $scope.totalReviewsNPS = 0;\n $scope.reviewsNPS = [];\n $scope.toggle = false;\n $scope.loadingNPS = false;\n\n $scope.pageNPSModal = 1;\n $scope.pageSizeModal = 10;\n\n $scope.openModalNpsReview = function (classTitle, classId) {\n $scope.loadingNPS = true;\n $scope.classTitle = classTitle;\n $scope.classId = classId;\n $('#npsReviews').openModal();\n $scope.getNpsReview(classId);\n };\n\n $scope.getNpsReview = function (classId, page) {\n if (!page) page = 1;\n Api.get(`user_experience_review/questions/${$scope.filterNpsSelected}?course_id=${courseId}&class_id=${classId}&page_size=${$scope.pageSizeModal}&page=${page}`, function (err, ret) {\n if (!err) {\n $scope.totalReviewsNPS = ret.response.data.total;\n $scope.reviewsNPS = ret.response.data.reviews;\n }\n $scope.loadingNPS = false;\n });\n };\n\n $scope.closeNpsReviews = function () {\n $('#npsReviews').closeModal();\n };\n\n // Review Search\n $scope.filterDateReviewIni = ''; \n $scope.filterDateReviewEnd = '';\n $scope.filterReviewSelected = '';\n $scope.questionsReview= [];\n $scope.currentPageReview = 1;\n $scope.totalClassesReview = 0;\n $scope.modulesReview = [];\n $scope.loadingReview = false;\n\n\n var today = new Date();\n var initialDate = new Date(new Date().setDate(today.getDate() - 30));\n\n var endDateReview = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 20, 59, 59);\n var iniDateReview = new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate(), 21, 0, 0);\n\n $scope.filterDateReviewIni = iniDateReview.toISOString();\n $scope.filterDateReviewEnd = endDateReview.toISOString();\n\n $scope.getAllReview = function (page, pageSize, dateIni, dateEnd) {\n $scope.loadingReview = true;\n if ($scope.lang === 'pt-br' && dateIni && typeof dateIni === 'string') {\n dateIni = new Date(dateIni.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n dateIni = dateIni.toISOString();\n }\n if ($scope.lang === 'pt-br' && dateEnd && typeof dateEnd === 'string') {\n dateEnd = new Date(dateEnd.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n dateEnd = dateEnd.toISOString();\n }\n Api.get(`user_experience_review/net_promoter_score/questions/${$scope.filterReviewSelected}/?start_date=${dateIni}&end_date=${dateEnd}&course_id=${courseId}&page=${page}&page_size=${pageSize}`, function (err, ret) {\n if (!err) {\n $scope.totalClassesReview = ret.response.data.total_classes;\n $scope.modulesReview = ret.response.data.modules;\n }\n $scope.loadingReview = false;\n });\n };\n\n $scope.changeReviewQuestion = function (filterReviewSelected) {\n $scope.filterReviewSelected = filterReviewSelected;\n };\n\n $scope.getQuestionsReview = function () {\n Api.get('custom-survey-questions/lightweight/text', function (err, ret) {\n if (!err) {\n $scope.questionsReview = ret.response.data;\n }\n });\n };\n\n $scope.getQuestionsReview();\n\n $scope.searchReview = function (Form, currentPageReview, pageSize, filterDateNpsIni, filterDateNpsEnd) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n } else {\n return $scope.getAllReview(currentPageReview, pageSize, filterDateNpsIni, filterDateNpsEnd);\n }\n };\n\n // Review Search by class\n $scope.courseId = $scope.id;\n $scope.classTitle = '';\n $scope.classId = '';\n $scope.totalReviewsQuestions = 0;\n $scope.reviewsQuestions = [];\n $scope.toggle = false;\n $scope.loadingReview = false;\n\n $scope.pageReviewModal = 1;\n $scope.pageSizeModal = 10;\n\n $scope.openModalQuestionReview = function (classTitle, classId) {\n $scope.loadingReview = true;\n $scope.classTitle = classTitle;\n $scope.classId = classId;\n $('#questionReviews').openModal();\n $scope.getQuestionReview(classId);\n };\n\n $scope.getQuestionReview = function (classId, page) {\n if (!page) page = 1;\n Api.get(`user_experience_review/questions/${$scope.filterReviewSelected}?course_id=${courseId}&class_id=${classId}&page_size=${$scope.pageSizeModal}&page=${page}`, function (err, ret) {\n if (!err) {\n $scope.totalReviewsQuestions = ret.response.data.total;\n $scope.reviewsQuestions = ret.response.data.reviews;\n }\n $scope.loadingReview = false;\n });\n };\n\n $scope.closeQuestionReviews = function () {\n $('#questionReviews').closeModal();\n };\n\n // Publish Course\n $scope.publishCourse = function () {\n var courseReady = false;\n for (var m in $scope.modules) {\n for (var c in $scope.modules[m].course_classes) {\n if ($scope.modules[m].course_classes[c].status === 1 && $scope.modules[m].status === 1) {\n courseReady = true;\n break;\n }\n }\n }\n if (courseReady) {\n Api.put(`course/${courseId}`, {status: 1}, function (err) {\n if (!err) $scope.course.status = 1;\n });\n } else {\n $translate('COURSE.ERROR_COURSE_READY').then(function (result) {\n App.toast(result, 3000);\n });\n }\n };\n\n // Get course users\n $scope.searchLoading = false;\n $scope.courseGroupFilter = '';\n $scope.courseFilterMonetizationStatus = '';\n $scope.courseFilterRole = '';\n\n $scope.getUsers = function (page, pageSize, role, filter, target, monetization, courseGroupId) {\n $scope.courseGroupFilter = courseGroupId;\n\n if (role) {\n $scope.courseFilterRole = role !== 'ALL' ? role : '';\n }\n if (monetization) {\n $scope.courseFilterMonetizationStatus = monetization !== 'ALL' ? monetization : '';\n }\n $scope.searchLoading = true;\n\n if (!page) {\n page = 1;\n }\n let queryString = '';\n if ($scope.courseFilterRole) {\n queryString += `&role=${$scope.courseFilterRole}`;\n }\n if (page) {\n queryString += `&page=${page}`;\n }\n if (pageSize) {\n queryString += `&page_size=${pageSize}`;\n }\n if (filter) {\n queryString += `&text_filter=${filter}`;\n }\n if ($scope.courseFilterMonetizationStatus && $scope.courseFilterRole !== 'ADM') {\n queryString += `&monetization_status=${$scope.courseFilterMonetizationStatus}`;\n }\n if (courseGroupId && $scope.courseFilterRole === 'USR') {\n queryString += `&course_group_id=${courseGroupId}`;\n }\n\n Api.get(`course/${courseId}/users?return_as=list&signup_pending=false${queryString}`, function (err, resp) {\n if (!err) {\n $scope[target] = resp.response.data;\n }\n $scope.searchLoading = false;\n });\n };\n\n $scope.getUsers(1, 30, 'ALL', '', 'courseUsers');\n $scope.getUsers(1, 100, 'ADM', '', 'courseAdmins');\n $scope.courseFilterRole = '';\n\n $scope.preSave = function (payload) {\n if (payload.status) payload.status = 1;\n else payload.status = 0;\n\n if (payload.hasOwnProperty('category_id') && (!payload.category_id || payload.category_id.length < 24)) delete payload.category_id;\n\n if (payload.video_url && !/youtube.com\\/watch|docs.google.com\\/presentation|vimeo.com|youtu.be\\//.test(payload.video_url)) {\n $translate('COURSE.ERROR_VIDEO_URL').then(function (result) {\n App.toast(result, 3000);\n });\n return 'ERROR';\n } else if (!payload.author_id) {\n $translate('COURSE.ERROR_AUTHOR').then(function (result) {\n App.toast(result, 3000);\n });\n return 'ERROR';\n }\n $scope.showMonetizationTabs = true;\n };\n\n // Show user data from item select on suggest input\n $scope.preAddUser = function (user) {\n Api.get(`user/get/${user.id}`, function (err, data) {\n $scope.newUser = data.response;\n });\n };\n\n // Open modal for add new user as ADM ou Enrolment\n $scope.openUser = function (role) {\n $scope.activeRole = role;\n $scope.newUser = false;\n $scope.new_user = '';\n $('#add_user').openModal();\n };\n\n $scope.courses_group = [];\n $scope.current_course_group = {};\n $scope.isManage = false;\n\n $scope.loadCoursesGroup = function () {\n Api.get(`courses/${courseId}/course-groups`, function (err, resp) {\n if (!err) {\n $scope.courses_group = resp.response.data;\n }\n });\n };\n\n // Add new user\n $scope.addNewUser = function (user) {\n if (!user) {\n $translate('COURSE.ERROR_SELECT_USER').then(function (result) {\n App.toast(result, 3000);\n });\n return;\n }\n\n var payload = {\n role: $scope.activeRole,\n signup_pending: false\n };\n\n var existsAsUser = false;\n var existsAsAdm = false;\n var methodCall = 'post';\n\n for (var usr in $scope.courseUsers.items) {\n if ($scope.courseUsers.items[usr].id === user._id) {\n existsAsUser = true;\n break;\n }\n }\n for (var usr in $scope.courseAdmins.items) {\n if ($scope.courseAdmins.items[usr].id === user._id) {\n existsAsAdm = true;\n break;\n }\n }\n\n // User already exists as USR, change role to ADM\n if ($scope.activeRole === 'ADM' && existsAsUser) methodCall = 'put';\n\n // User already exists as ADM, send warning msg\n if ($scope.activeRole !== 'ADM' && existsAsAdm) {\n $translate('MESSAGES.USER_ALREADY_IN_COURSE_AS_ADM').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n }\n\n Api[methodCall](`courses/${courseId}/users/${user._id}/enrollment`, payload, function (err, ret) {\n if (!err) {\n $('#add_user').closeModal();\n $scope.newUser = false;\n $scope.new_user = '';\n if ($scope.activeRole === 'ADM') $scope.getUsers(1, 100, 'ADM', '', 'courseAdmins');\n else $scope.getUsers(1, 30, 'USR', '', 'courseUsers');\n }\n });\n\n $scope.loadCoursesGroup();\n };\n\n // Custom function for role remove for snippetuserlist directive\n $scope.remove_role = function (user_id) {\n Api.delete(`courses/${courseId}/users/${user_id}/enrollment`, function (err, resp) {\n $scope.getUsers(1, 100, 'ADM', '', 'courseAdmins');\n $scope.getUsers(1, 30, 'USR', '', 'courseUsers');\n });\n };\n\n $scope.subscriptionSuspension = function (subscriptionId) {\n Api.post(`monetization/subscriptions/${subscriptionId}/suspension`, {}, function (err, resp) {\n if (!err && resp) {\n $translate('MESSAGES.USER_COURSES_CANCELLATION_REQUESTED').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.getUsers(1, 30, 'USR', '', 'courseUsers', $scope.searchFilter, $scope.courseGroupFilter);\n } else {\n $translate('GLOBAL.ERROR').then((result) => App.toast(result, 5000));\n }\n });\n };\n\n $scope.cancel_unsubscribe_request = function (subscriptionId) {\n Api.post(`monetization/subscriptions/${subscriptionId}/remove-suspension`, {}, function (err, resp) {\n if (!err && resp) {\n $translate('MESSAGES.ROLE_UPDATED_UNDO_CANCEL').then(function (result) {\n Materialize.toast(result, 3000);\n });\n $scope.getUsers(1, 30, 'USR', '', 'courseUsers', $scope.searchFilter, $scope.courseGroupFilter);\n } else {\n $translate('GLOBAL.ERROR').then((result) => App.toast(result, 5000));\n }\n });\n };\n\n $scope.coursesAccessEmail = function (subscriptionId) {\n Api.post(`monetization/subscriptions/${subscriptionId}/courses-access-email`, {}, function (err, resp) {\n if (!err && resp) {\n $translate('MESSAGES.USER_COURSES_ACCESS_EMAIL').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n\n // List modules and classes\n var listModules = function () {\n Api.get(`course_module?course_id=${courseId}`, function (err, ret) {\n if (err) return false;\n $scope.modules = ret.response.data;\n });\n };\n listModules();\n\n $scope.openModule = function (moduleId) {\n $scope.newModule = {};\n if (moduleId) {\n Api.get(`course_module/${moduleId}`, function (err, ret) {\n if (err) return false;\n $scope.newModule = ret.response;\n });\n }\n $('#module_modal').openModal();\n };\n $scope.saveModule = function (data, Form) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n }\n $('#module_modal').closeModal();\n if (data._id) {\n Api.put(`course_module/${data._id}`, data, function (err, ret) {\n if (!err) listModules();\n $scope.newModule = {};\n });\n } else {\n Api.post(`course_module?course_id=${courseId}`, data, function (err, ret) {\n if (!err) listModules();\n $scope.newModule = {};\n });\n }\n };\n $scope.deleteModule = function (moduleId) {\n Api.delete(`course_module/${moduleId}`, function (err, ret) {\n if (err) {\n if (ret.response && ret.response.error_code === 'CANNOT_DELETE_MODULE_WITH_CLASSES') {\n $translate('MESSAGES.CANNOT_DELETE_MODULE_WITH_CLASSES').then(function (result) {\n App.toastError(result, 8000);\n });\n }\n return;\n }\n listModules();\n });\n };\n\n // Open/close takeover for course class\n $scope.closeClass = function () {\n window.scrollTo(0, yScrollPosition);\n $scope.editClass = false;\n $scope.takeoverOpen = false;\n $scope.class = {};\n };\n\n $scope.openClass = function (class_id, module_id) {\n yScrollPosition = window.scrollY;\n // Reset scroll\n window.scrollTo(0, 0);\n $scope.classloading = 1;\n $scope.takeoverOpen = true;\n $scope.course_class = {\n title: '',\n content: '',\n embed_type: 'no_embed',\n can_be_completed: true,\n status: 1\n };\n if (module_id) {\n $scope.course_class.module_id = module_id;\n $scope.newClassModule = module_id;\n }\n if (class_id) {\n Api.get(`course_class/${class_id}`, function (err, ret) {\n $scope.course_class = ret.response.data;\n $scope.classloading = 0;\n });\n } else {\n $scope.classloading = 0;\n }\n $scope.editClass = true;\n };\n\n $scope.closeContentType = function (data) {\n data.embed_type = 'no_embed';\n data.video_url = '';\n data.generated_class_id = '';\n data.stream_server_url = '';\n data.stream_key = '';\n data.stream_playback_url = '';\n data.stream_channel_arn = '';\n };\n\n $scope.openModal = function (idModal, data) {\n data.video_url = '';\n if (idModal === '#streamLink' || '#modalStreamPlatform') {\n let url = '';\n if (data.id) {\n url = `course_class/${courseId}/streaming/${data.id}`;\n } else {\n url = `course_class/${courseId}/streaming`;\n }\n Api.get(url, function (err, ret) {\n if (!err) {\n data.generated_class_id = ret.response.data.generated_class_id;\n data.stream_server_url = ret.response.data.stream_server_url;\n data.stream_key = ret.response.data.stream_key;\n data.stream_playback_url = ret.response.data.stream_playback_url;\n data.stream_channel_arn = ret.response.data.stream_channel_arn;\n $(idModal).openModal();\n }\n });\n } else {\n $(idModal).openModal();\n }\n };\n\n $scope.saveMidiaValidation = function (data, idModal, embedType) {\n if (data.video_url && !/youtube.com\\/watch|docs.google.com\\/presentation|vimeo.com|youtu.be\\//.test(data.video_url)) {\n $translate('COURSE.ERROR_VIDEO_URL').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n } else {\n data.embed_type = embedType;\n $translate('COURSE.SAVED_VIDEO_URL').then(function (result) {\n App.toast(result, 3000);\n });\n $(idModal).closeModal();\n }\n };\n\n $scope.saveClass = function (data) {\n if (!data || !data.title) {\n $translate('MESSAGES.COURSE_CLASS_TITLE_REQUIRED').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n } else if (data.title.length < 4 || data.title.length > 100) {\n $translate('COURSE.ERROR_TITLE').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n }\n if (data.id) {\n Api.put(`course_class/${data.id}`, data, function (err, ret) {\n $scope.closeClass();\n listModules();\n });\n } else {\n Api.post(`course_class?course_module_id=${$scope.newClassModule}`, data, function (err, ret) {\n $scope.closeClass();\n listModules();\n });\n }\n };\n $scope.deleteClass = function (classId) {\n Api.delete(`course_class/${classId}`, function (err, ret) {\n if (err) {\n if (ret.response && ret.response.error_code === 'CANNOT_DELETE_ACTIVE_CLASS') {\n $translate('MESSAGES.CANNOT_DELETE_ACTIVE_CLASS').then(function (result) {\n App.toastError(result, 8000);\n });\n }\n return;\n }\n listModules();\n });\n };\n\n $scope.uploadFile = function (file, invalid) {\n var files = $scope.course_class.files || [];\n var exists = false;\n $scope.uploadingFile = true;\n\n // Check if file already in class\n for (var i in files) if (files[i].file_alias === file.name) exists = true;\n if (exists) {\n $translate('MESSAGES.COURSE_CLASS_FILE_ALREADY_IN_CLASS').then(function (result) {\n App.toast(result, 5000);\n });\n return false;\n } else if (files.length === 10) {\n // Check max files per class\n $translate('MESSAGES.COURSE_CLASS_MAX_FILE_PER').then(function (result) {\n App.toast(result, 5000);\n });\n return false;\n } else if (invalid) {\n if (invalid.$error === 'maxSize')\n // Error max size\n $translate('MESSAGES.COURSE_CLASS_FILE_MAXSIZE').then(function (result) {\n App.toast(result, 5000);\n });\n else if (invalid.$error === 'pattern')\n // Error file pattern\n $translate('MESSAGES.COURSE_CLASS_FILE_PATTERN').then(function (result) {\n App.toast(result, 5000);\n });\n return false;\n }\n ReqAndUpload.upload(file, 'course', courseId).then(function (filename) {\n if (filename) {\n if (!$scope.course_class.files) $scope.course_class.files = [];\n $scope.course_class.files.push({\n file_alias: file.name,\n file_name: filename\n });\n }\n $scope.uploadingFile = false;\n });\n };\n $scope.removeFile = function (index) {\n $scope.course_class.files.splice(index, 1);\n };\n\n var updatingModules = false;\n var updateModules = function () {\n if (updatingModules) clearTimeout(updatingModules);\n updatingModules = window.setTimeout(function () {\n var payload = {\n course_modules: []\n };\n $('.modules-sortable > li').each(function () {\n var moduleObj = $(this);\n var moduleId = moduleObj.attr('data-moduleid');\n var classes = [];\n if (moduleObj.find('ul').length > 0) {\n moduleObj.find('li:not(.empty_module)').each(function () {\n var classId = $(this).attr('data-classid');\n classes.push(classId);\n });\n }\n payload.course_modules.push({\n id: moduleId,\n course_classes: classes\n });\n });\n Api.put(`course_module?course_id=${courseId}`, payload, function (err, resp) {\n if (err) {\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n }\n listModules();\n });\n }, 2000);\n };\n\n // Drag'n Drop modules and classes\n $scope.moduleSortableOptions = {\n handle: '.handle',\n placeholder: 'collection-item',\n forcePlaceholderSize: true,\n stop: updateModules\n };\n $scope.classSortableOptions = {\n handle: '.handle',\n placeholder: 'collection-item',\n forcePlaceholderSize: true,\n connectWith: '.classes-sortable',\n stop: updateModules\n };\n\n $scope.lang = bcp.settings.language;\n\n $scope.loadCoursesGroup();\n\n $scope.addCourseGroup = function () {\n let letterGroup = getLetterGroup($scope.courses_group.length);\n Api.post(`courses/${courseId}/course-groups`, {title: `${letterGroup}`}, function (err, resp) {\n if (!err) {\n $translate(`COURSE.${resp.response.result}`).then(function (result) {\n $scope.loadCoursesGroup();\n App.toast(result, 3000);\n });\n }\n });\n };\n\n $scope.removeClass = function (id) {\n Api.delete(`courses/${courseId}/course-groups/${id}`, function (err, resp) {\n if (err) {\n $translate(`COURSE.${err.response.error_code}`).then(function (result) {\n App.toast(result, 3000);\n });\n }\n\n if (!err) {\n $translate(`COURSE.${resp.response.result}`).then(function (result) {\n $scope.loadCoursesGroup();\n App.toast(result, 3000);\n });\n }\n });\n };\n\n $scope.current_course_group = {};\n $scope.manageCourseGroup = function (id) {\n $scope.isManage = true;\n Api.get(`courses/${courseId}/course-groups/${id}`, function (err, resp) {\n if (!err) {\n if (resp.response.data.modules_configurations) {\n for (let index = 0; index < resp.response.data.modules_configurations.length; index++) {\n const element = resp.response.data.modules_configurations[index];\n if (!element.activate_in || element.activate_in === '1969-12-31T03:00:00.000Z') {\n resp.response.data.modules_configurations[index].activate_in = '';\n }\n }\n }\n $scope.current_course_group = resp.response.data;\n $scope.link2WebHookHotmart = `api.squidcommunity.com/webhook/hotmart/${$scope.project_id}/${$scope.current_course_group.id}`;\n }\n });\n };\n\n $scope.editSaveGroup = function () {\n $scope._fixDate();\n Api.put(`courses/${$scope.current_course_group.course_id}/course-groups/${$scope.current_course_group.id}`, $scope.current_course_group, function (err, resp) {\n if (err) {\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n }\n\n if (!err) {\n $translate(`COURSE.${resp.response.result}`).then(function (result) {\n App.toast(result, 3000);\n $scope.cancelEditSaveGroup();\n $scope.loadCoursesGroup();\n });\n }\n });\n };\n\n $scope._fixDate = function () {\n if ($scope.current_course_group.modules_configurations.length < 1) {\n return;\n }\n\n for (let index = 0; index < $scope.current_course_group.modules_configurations.length; index++) {\n const element = $scope.current_course_group.modules_configurations[index];\n if (element.activate_in) {\n let day = new Date(element.activate_in);\n if ($scope.lang == 'pt-br' && element.activate_in && typeof element.activate_in === 'string') {\n day = new Date(element.activate_in.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n }\n day.setHours(0, 0, 0);\n $scope.current_course_group.modules_configurations[index].activate_in = day.toISOString();\n } else {\n $scope.current_course_group.modules_configurations[index].activate_in = undefined;\n }\n }\n };\n\n $scope.cancelEditSaveGroup = function () {\n $scope.isManage = false;\n $scope.current_course_group = {};\n };\n\n $scope.changeDateModulesConfigurations = function (date) {\n if (date) {\n let day = new Date(date);\n const today = new Date();\n if ($scope.lang === 'pt-br' && date && typeof date === 'string') {\n day = new Date(date.replace(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/, '$2/$1/$3'));\n }\n day.setHours(0, 0, 0);\n day.setMilliseconds(0);\n today.setHours(0, 0, 0);\n today.setMilliseconds(0);\n if (day.getTime() < today.getTime()) {\n $translate('MESSAGES.DATE_IS_EARLIER_THAN_THE_CURRENT_DATE').then(function (result) {\n App.toastError(result, 8000);\n });\n }\n }\n };\n\n $scope.calendar = {\n m: {\n 'pt-br': ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n en: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n },\n ms: {\n 'pt-br': ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Out', 'Nov', 'Dez'],\n en: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n },\n wf: {\n 'pt-br': ['Domingo', 'Segunda-Feira', 'Terça-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'Sábado'],\n en: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n },\n wl: {\n 'pt-br': ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n en: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n },\n td: {\n 'pt-br': 'Hoje',\n en: 'Today'\n },\n clear: {\n 'pt-br': 'Limpar',\n en: 'Clear'\n },\n close: {\n 'pt-br': 'OK',\n en: 'OK'\n },\n dateformat: {\n 'pt-br': 'dd/mm/yyyy',\n en: 'mm/dd/yyyy'\n }\n };\n const currentTime = new Date();\n $scope.currentTime = currentTime;\n $scope.month = $scope.calendar.m[$scope.lang];\n $scope.monthShort = $scope.calendar.ms[$scope.lang];\n $scope.weekdaysFull = $scope.calendar.wf[$scope.lang];\n $scope.weekdaysLetter = $scope.calendar.wl[$scope.lang];\n $scope.disable = [false, 1, 7];\n $scope.today = $scope.calendar.td[$scope.lang];\n $scope.clear = $scope.calendar.clear[$scope.lang];\n $scope.close = $scope.calendar.close[$scope.lang];\n $scope.dateformat = $scope.calendar.dateformat[$scope.lang];\n const days = 15;\n $scope.minDate = new Date($scope.currentTime.getTime() - 1000 * 60 * 60 * 24 * days).toISOString();\n $scope.maxDate = new Date($scope.currentTime.getTime() + 1000 * 60 * 60 * 24 * days).toISOString();\n const getLetterGroup = (i) => (i >= 26 ? getLetterGroup(Math.floor(i / 26) - 1) : '') + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i % 26];\n $(document).on('mousedown', '.picker__input', function (event) {\n event.preventDefault();\n });\n\n $scope.coProductions = [];\n $scope.coProducer = [];\n $scope.newCoProducer = false;\n $scope.isEditCoProducer = false;\n $scope.totalRevenue = 0;\n $scope.showMonetizationTabs = false;\n\n var editCoProducerItem = null;\n var showUnloadMsgCoProducer = false;\n $scope.enabledSplit = false;\n\n $scope.loadCoProductions = function () {\n Api.get(`monetization/split/course/${courseId}`, function (err, resp) {\n if (!err) {\n $scope.coProductions = [];\n for (var i in resp.response.data) {\n var coProducer = resp.response.data[i];\n var commission = coProducer.percentage_value / 100;\n commission = Math.round(commission * 100) / 100;\n $scope.coProductions.push({\n user: {\n _id: coProducer.id,\n name: coProducer.name,\n slug: coProducer.slug,\n job: coProducer.job,\n company: coProducer.company,\n image: coProducer.image,\n banned: coProducer.banned\n },\n date: coProducer.join_date,\n commission: commission,\n terms: true\n });\n $scope.totalRevenue += commission;\n $scope.enabledSplit = true;\n }\n }\n });\n };\n\n $scope.loadCoProductions();\n\n $translate('COURSE.COPRODUCER_UNLOAD_MSG').then(function (result) {\n $('ul.tabs li').on('click', function (e) {\n if (showUnloadMsgCoProducer && !$(e.target).hasClass('active')) {\n if (confirm(result)) {\n showUnloadMsgCoProducer = false;\n return true;\n }\n return false;\n }\n });\n\n window.addEventListener('beforeunload', function (e) {\n if (showUnloadMsgCoProducer) {\n showUnloadMsgCoProducer = false;\n e.returnValue = result;\n return result;\n }\n });\n });\n\n $scope.onkeypressCoProducer = function (e, value) {\n var maxValue = 100 - $scope.totalRevenue;\n maxValue = Math.round(maxValue * 100) / 100;\n if (value >= maxValue) {\n $scope.coProducer.commission = maxValue;\n $translate('COURSE.COPRODUCER_COMMISSION_MAX').then(function (result) {\n App.toast(result + maxValue, 3000);\n });\n }\n if (value <= 0) {\n $scope.coProducer.commission = null;\n }\n };\n\n $scope.setNewCoProducer = function () {\n $scope.newUser = false;\n $scope.coProducer = [];\n $scope.isEditCoProducer = false;\n $scope.toogleCoProducer();\n };\n\n $scope.editCoProducer = function (p) {\n $scope.coProducer = {\n user: p.user,\n date: p.date,\n commission: p.commission,\n terms: p.terms\n };\n $scope.newUser = p.user;\n $scope.isEditCoProducer = true;\n $scope.toogleCoProducer();\n editCoProducerItem = p;\n $scope.totalRevenue -= p.commission;\n $scope.coProductions.splice(getUserIndexCoProducer(p.user), 1);\n };\n $scope.removeCoProducer = function (p) {\n var index = getUserIndexCoProducer(p.user);\n $scope.coProductions.splice(index, 1);\n $scope.totalRevenue -= p.commission;\n $translate('COURSE.COPRODUCER_REMOVE_OK').then(function (result) {\n App.toast(result, 3000);\n });\n };\n\n $scope.addCoProducer = function (form) {\n if (form.$invalid) {\n formNotify($scope, form);\n return false;\n }\n if (!$scope.newUser) {\n $translate('COURSE.ERROR_SELECT_USER').then(function (result) {\n App.toast(result, 3000);\n });\n return;\n }\n showUnloadMsgCoProducer = true;\n var index = getUserIndexCoProducer($scope.newUser);\n\n if (index >= 0) {\n $translate('COURSE.COPRODUCER_ADDED').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n }\n\n $scope.coProducer.date = new Date();\n $scope.coProducer.user = $scope.newUser;\n $scope.coProductions.push($scope.coProducer);\n $scope.totalRevenue += $scope.coProducer.commission;\n $scope.coProducer = [];\n editCoProducerItem = null;\n $translate('COURSE.COPRODUCER_ADD_OK').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.toogleCoProducer();\n };\n\n $scope.saveCoProducer = function () {\n var maxValue = Math.round($scope.totalRevenue * 100) / 100;\n if (maxValue < 100) {\n $translate('COURSE.COPRODUCER_TOTAL_REVENUE').then(function (result) {\n App.toast(result, 3000);\n });\n return;\n }\n\n var splitPost = {\n coproducers: []\n };\n\n for (var i in $scope.coProductions) {\n splitPost.coproducers.push({\n user_id: $scope.coProductions[i].user._id,\n percentage_value: Math.round($scope.coProductions[i].commission * 100)\n });\n }\n\n Api.post(`monetization/split/course/${courseId}`, splitPost, function (err, ret) {\n showUnloadMsgCoProducer = false;\n if (!err) {\n $translate('COURSE.COPRODUCER_SAVE').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n $scope.toogleCoProducer = function () {\n $scope.newCoProducer = !$scope.newCoProducer;\n if ($scope.isEditCoProducer && editCoProducerItem) {\n $scope.coProductions.push(editCoProducerItem);\n $scope.totalRevenue += editCoProducerItem.commission;\n editCoProducerItem = null;\n }\n };\n\n $scope.toggleEnabledSplit = function () {\n $scope.enabledSplit = !$scope.enabledSplit;\n\n var data = {coproducers: []};\n if (!$scope.enabledSplit) {\n Api.post(`monetization/split/course/${courseId}`, data, function (err, resp) {\n if (!err) {\n $scope.coProductions = [];\n }\n });\n }\n };\n\n function getUserIndexCoProducer(user) {\n return $scope.coProductions.findIndex(function (i) {\n return i.user._id === user._id;\n });\n }\n }\n };\n})();\n","var groupCtrl = (function () {\n return {\n\n groupNew: function ($scope, Api) {\n\n $scope.newCB = function (response) {\n var page_id = response.response;\n window.location.href = `/manage.app#!/group/groups/${page_id}`;\n }\n\n },\n\n group: function ($scope, Api) {\n if (!$scope.project_data.plan.groups_feature_enabled) return false;\n\n $scope.blogs = false;\n $scope.currentPage = 1;\n $scope.searchKw = '';\n $scope.searchMode = 'AUTHOR';\n $scope.total = 0;\n\n // Group Counters\n $scope.counters = {\n 'OWNER': 0,\n 'AUTHOR': 0,\n 'ALL': 0\n }\n var counter = function (key) {\n Api.get(`blogs/counter?mode=${key}`, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n }\n for (var key in $scope.counters) counter(key);\n\n $scope.list = function (page, kw, mode) {\n $scope.blogs = false;\n $scope.currentPage = page;\n $scope.searchKw = kw;\n $scope.searchMode = mode;\n Api.get(`blogs/get?page=${page}&page_size=10&filter=${kw}&mode=${mode}`, function (err, resp) {\n if (!err) {\n $scope.blogs = resp.response;\n $scope.total = resp.total;\n }\n });\n }\n\n // Change role\n $scope.group_exit = function (page_id) {\n Api.put('user/link_to_group', {action: 'delete', page_id: page_id}, function (err, resp) {\n $scope.list($scope.currentPage, $scope.searchKw, $scope.searchMode);\n for (var key in $scope.counters) counter(key);\n });\n }\n\n $scope.list(1, $scope.searchKw, $scope.searchMode);\n\n $scope.redirectGroups = function () {\n window.location.href = '/groups';\n }\n },\n\n groupDetail: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n\n $scope.currentPage = 1;\n $scope.kw = '';\n $scope.user_searching = false;\n\n $('#user_search').autocomplete({\n search: function () {\n $scope.user_searching = true;\n },\n response: function () {\n $scope.user_searching = false;\n }\n });\n\n // Post count\n $scope.post_count = 0;\n Api.get(`article/counter?status=PUBLISHED&mode=ALL&page_id=${$scope.id}`, function (err, resp) {\n if (!err) $scope.post_count = resp.response;\n });\n\n // Pre update group\n $scope.preUpdate = function (group) {\n delete group.author_id;\n delete group.author_name;\n delete group.author_slug;\n delete group.created;\n delete group.followers_count;\n delete group.id;\n delete group.owner;\n delete group.posts_count;\n delete group.role;\n delete group.url;\n delete group.writers_count;\n }\n\n $scope.cbUpdate = function () {\n $scope.loadData('blogs/get/id', 'group');\n }\n\n // Get user list\n $scope.users = {\n itens: [],\n total: 0\n };\n $scope.list = function (page, kw) {\n $scope.currentPage = page;\n var filter = `signup_pending=false&page=${$scope.currentPage}&page_size=20&filter=${kw ? kw : ''}&page_id=${$scope.id}`;\n Api.get(`user/list?${filter}`, function (err, resp) {\n if (!err) {\n $scope.noresults = resp.response.data.length > 0 ? false : true;\n $scope.last = resp.response.data.length == 20 ? false : true;\n $scope.users = {\n itens: resp.response.data,\n total: resp.response.total\n };\n }\n });\n\n }\n\n $scope.list(1);\n\n // Show user data from item select on suggest input\n $scope.preAddUser = function (user) {\n Api.get(`user/get/${user.id}`, function (err, data) {\n $scope.newUser = data.response;\n })\n }\n\n // Add new user\n $scope.addNewUser = function (user) {\n if (!user) {\n return $translate('GROUP.USER_ADD_INVALID_UNSELECTED_USER').then(function (result) {\n App.toast(result, 3000);\n });\n }\n\n Api.post(`user/link_to_group/${user._id}`, {role: 'USR', group_id: $scope.id}, function (err, ret) {\n if (!err && ret.response === 'USER_LINK_TO_GROUP_CREATED') {\n $('#add_user').closeModal();\n $scope.newUser = false;\n $scope.new_user = '';\n $scope.list(1);\n } else {\n if (ret.response && ret.response.errorCode && ret.response.errorCode === 'USER_ALREADY_IN_GROUP') {\n $translate('GROUP.USER_ADD_INVALID_USER').then(function (result) {\n App.toast(result, 3000);\n });\n }\n }\n })\n }\n\n\n }\n\n }\n})();\n","var panelCtrl = (function () {\n return {\n approval: function ($scope, Api) {\n // User Counters\n $scope.userApprovalCount = 0;\n\n var counters = function () {\n var callCounters = {\n COMMUNITY: 0,\n GROUPS_ADM: 0,\n GROUPS_NOADM: 0,\n COURSES_ADM: 0,\n COURSES_NOADM: 0\n };\n\n var counter = function (key) {\n var requestUrl = 'user/counter';\n\n if (key == 'COMMUNITY') requestUrl = 'user/counter?signup_pending=true';\n else if (key == 'GROUPS_ADM') requestUrl = 'user/counter?signup_pending=true&scope=my_groups';\n else if (key == 'GROUPS_NOADM') requestUrl = 'user/counter?signup_pending=true&scope=others_groups';\n else if (key == 'COURSES_ADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=my_courses';\n else if (key == 'COURSES_NOADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=others_courses';\n\n Api.get(requestUrl, function (err, resp) {\n if (!err) $scope.userApprovalCount += resp.response ? resp.response : 0;\n });\n };\n\n if ($scope.$parent.currentUser.role === 'ADM') {\n for (var key in callCounters) counter(key);\n } else counter('GROUPS_ADM');\n\n // Post approval counter\n const postApprovalScope = $scope.currentUser.role === 'ADM' ? 'ALL' : 'ADMGROUPS';\n $scope.loadData(`article/counter?mode=PENDING&status=${postApprovalScope}`, 'pendingContent');\n\n // Comment counter\n var commentCall = $scope.currentUser.isadmin ? 'status=2&scope=all&collection=articles' : 'status=2&scope=in_my_content&collection=articles';\n $scope.loadData(`comment?return_as=count&${commentCall}`, 'pendingComment');\n };\n\n counters();\n },\n\n blocked: function ($scope, Api) {\n // User Counters\n $scope.userApprovalCount = 0;\n\n var counters = function () {\n var callCounters = {\n COMMUNITY: 0,\n GROUPS_ADM: 0,\n GROUPS_NOADM: 0,\n COURSES_ADM: 0,\n COURSES_NOADM: 0\n };\n\n var counter = function (key) {\n var requestUrl = 'user/counter';\n\n if (key == 'COMMUNITY') requestUrl = 'user/counter?signup_pending=true';\n else if (key == 'GROUPS_ADM') requestUrl = 'user/counter?signup_pending=true&scope=my_groups';\n else if (key == 'GROUPS_NOADM') requestUrl = 'user/counter?signup_pending=true&scope=others_groups';\n else if (key == 'COURSES_ADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=my_courses';\n else if (key == 'COURSES_NOADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=others_courses';\n\n Api.get(requestUrl, function (err, resp) {\n if (!err) $scope.userApprovalCount += resp.response ? resp.response : 0;\n });\n };\n\n if ($scope.$parent.currentUser.role === 'ADM') {\n for (var key in callCounters) counter(key);\n } else counter('GROUPS_ADM');\n };\n\n counters();\n },\n\n profile: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n $scope.preProfile = function (payload) {\n if (payload.slug && /___/.test(payload.slug)) {\n console.error('ERRO DO UNDERSCORE');\n $translate('MESSAGES.USER_SLUG_INVALID_UNDERSCORE').then(function (result) {\n App.toastError(result, 3000);\n });\n return 'ERROR';\n }\n };\n\n $scope.callbackProfile = function (err, ret) {\n if (ret.response && ret.response.message === 'ALREADY_EXISTS') {\n $translate('MESSAGES.USER_SLUG_ALREADY_EXISTS').then(function (result) {\n App.toastError(result, 3000);\n });\n } else {\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n }\n };\n\n let queryString = unserialize(window.location.href.split('?').pop());\n let popupSocial = null;\n $scope.currentTab = 'tab1';\n $scope.user = {};\n $scope.facebook = false;\n\n // Get user data\n let userGet = function () {\n Api.get('user/get', function (err, resp) {\n if (!err) {\n if (!resp.response.password) $scope.facebook = true;\n $scope.user.email = resp.response.email;\n if (resp.response.phone_number) {\n let regex = /^(\\+\\d{0,2})(\\d{0,2})(\\d{0,5})(\\d{0,4})/;\n let subst = `$1 ($2) $3-$4`;\n let str = resp.response.phone_number;\n $scope.user.phone_number = str.replace(regex, subst);\n }\n $scope.user.new_email = resp.response.new_email ? resp.response.new_email : false;\n $scope.user.facebook_id = resp.response.facebook_id ? resp.response.facebook_id : false;\n $scope.user.google_id = resp.response.google_id ? resp.response.google_id : false;\n $scope.user.linkedin_id = resp.response.linkedin_id ? resp.response.linkedin_id : false;\n if ($scope.user.facebook_id) $scope.user.facebook = resp.response.facebook;\n if ($scope.user.google_id) $scope.user.google = resp.response.google;\n if ($scope.user.linkedin_id) $scope.user.linkedin = resp.response.linkedin;\n }\n });\n };\n\n if (queryString['token']) {\n let token = queryString['token'];\n Api.post('auth/email-change-conclusion', { token: token }, function (err, resp) {\n if (!err) {\n $('#confirmChange').openModal();\n } else {\n $translate('PANEL.INVALID_LINK').then(function (result) {\n App.toast(result, 3000);\n });\n }\n userGet();\n });\n } else userGet();\n\n let closePopupSocial = function () {\n if (popupSocial) {\n popupSocial.close();\n }\n };\n\n let socialLink = function (data) {\n closePopupSocial();\n if (data.type === 'connectSocial') {\n Api.post(`auth/${data.social}/social-link`, data.payLoad, function (err, resp) {\n if (err) {\n if (resp && resp.data && resp.data.response && resp.data.response.error_id === 70013) {\n $translate(`PANEL.INVALID_${data.social.toUpperCase()}_ACCOUNT`).then(function (result) {\n App.toastError(result, 5000);\n });\n return;\n }\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n return;\n }\n\n if (data.social === 'facebook') {\n $scope.user.facebook_id = resp.response.data.id;\n if ($scope.user.facebook_id) {\n $scope.user.facebook = resp.response.data;\n }\n }\n\n if (data.social === 'google') {\n $scope.user.google_id = resp.response.data.id;\n if ($scope.user.google_id) {\n $scope.user.google = resp.response.data;\n }\n }\n\n if (data.social === 'linkedin') {\n $scope.user.linkedin_id = resp.response.data.id;\n if ($scope.user.linkedin_id) {\n $scope.user.linkedin = resp.response.data;\n }\n }\n });\n }\n };\n\n if (queryString['connect_data']) {\n let data = JSON.parse(queryString['connect_data']);\n socialLink(data);\n window.history.replaceState({}, document.title, window.location.href.split('?')[0]);\n }\n\n userGet();\n\n window.addEventListener('message', function (event) {\n if (event.origin.indexOf('squidcommunity.com') === -1 && event.origin.indexOf('duopana.com') === -1) {\n return;\n }\n let data = {};\n try {\n data = JSON.parse(event.data);\n } catch (e) {\n closePopupSocial();\n return;\n }\n\n socialLink(data);\n });\n\n // For mobile change tabs\n $scope.changeTab = function (tab) {\n $('ul.tabs').tabs('select_tab', tab);\n };\n\n // Connect social modal\n $scope.connectSocial = function (action) {\n let dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;\n let dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;\n let width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n let height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n let w = 650,\n h = 630;\n let left = width / 2 - w / 2 + dualScreenLeft;\n let top = height / 2 - h / 2 + dualScreenTop;\n let lang = bcp.settings.language || 'pt-br';\n let url = `https://squidcommunity.com/auth/connect/${action}?url_redirect=${encodeURIComponent(window.location.href)}&language=${lang}`;\n let title = 'Duopana Social';\n let options = 'width=' + w + ',height=' + h + ',location=no,resizable=no,menubar=no,scrollbars=no,status=no,titlebar=no,toolbar=no, top=' + top + ', left=' + left;\n if (window.innerWidth < 650) {\n window.location.href = url;\n } else {\n popupSocial = window.open(url, title, options);\n if (window.focus) {\n popupSocial.focus();\n }\n }\n };\n\n $scope.disconnect = function (social) {\n Api.delete(`auth/${social}/social-link`, function (err, resp) {\n if (!err) {\n $translate('PANEL.DATA_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n\n if (social === 'facebook') {\n $scope.user.facebook_id = false;\n }\n\n if (social === 'google') {\n $scope.user.google_id = false;\n }\n\n if (social === 'linkedin') {\n $scope.user.linkedin_id = false;\n }\n }\n });\n };\n\n $scope.changeEmail = function (data, Form) {\n if (Form.$invalid) {\n formNotify($scope, Form);\n return false;\n }\n var userData = {\n new_email: data.email\n };\n Api.post('auth/email-change', userData, function (err, resp) {\n if (!err && resp.status === 200) {\n $translate('PANEL.EMAIL_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.user.new_email = data.email;\n }\n });\n };\n\n $scope.cancelChange = function () {\n Api.delete('auth/email-change', function (err, resp) {\n if (!err) {\n $translate('PANEL.EMAIL_UPDATE_CANCEL').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.user.new_email = false;\n userGet();\n }\n });\n };\n\n $scope.sendEmail = function (data) {\n Api.post('auth/email-change', { new_email: data.new_email }, function (err, resp) {\n if (!err && resp.status === 200) {\n $translate('PANEL.EMAIL_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n } else {\n var codeMessage = resp.data.response && resp.data.response.error_code ? resp.data.response.error_code : '';\n var msg = codeMessage ? 'PANEL.' + codeMessage : 'PANEL.EMAIL_PROBLEM_CHANGE';\n\n $translate(msg).then(function (result) {\n App.toastError(result, 3000);\n });\n $scope.user.new_email = false;\n }\n });\n };\n\n $scope.confirmChangeEmail = function () {\n $('#confirmChange').closeModal();\n if (Object.keys($scope.user).length === 0) {\n window.location.href = '/';\n }\n };\n },\n\n bookmark: function ($scope, Api) {\n var user = $scope.currentUser;\n $scope.bookmarks = user.bookmark ? user.bookmark : [];\n $scope.deleteBookmark = function (index) {\n if (index !== undefined && $scope.bookmarks[index]._id) {\n var list_id = $scope.bookmarks[index]._id;\n Api.delete(`user/bookmark_delete/${list_id}`, function (err, ret) {\n if (!err) {\n $scope.bookmarks.splice(index, 1);\n user.bookmark = $scope.bookmarks;\n $scope.changeUser(user);\n }\n });\n }\n };\n },\n\n bookmarkDetail: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.save = function (item) {\n item.id = item._id;\n Api.post('user/bookmark_save', item, function (err, data) {\n if (!err) {\n $scope.syncData();\n $translate('PANEL.BOOKMARK_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n } else {\n App.toast(data.response, 3000);\n }\n });\n };\n },\n\n notification: function ($scope, Api) {\n $scope.messages = [];\n $scope.currentPage = 1;\n $scope.last = true;\n $scope.noresults = false;\n\n $scope.loadMore = function () {\n $scope.last = true;\n Api.get(`user/get_messages?page=${$scope.currentPage}`, function (err, data) {\n if (!err) {\n $scope.currentPage++;\n $scope.messages = $scope.messages.concat(data.response);\n if (data.response.length == 20) $scope.last = false;\n else if ($scope.currentPage === 0) $scope.noresults = true;\n }\n });\n };\n $scope.loadMore();\n },\n\n tag: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n var user = $scope.currentUser;\n $scope.tags = [];\n $scope.user_tags = [];\n $scope.user = {};\n $scope.user.tags = user.tags ? user.tags : [];\n\n Api.post('tag/list', { tags: user.tags }, function (err, data) {\n if (!err) $scope.user_tags = data.response;\n });\n\n $scope.tagRemove = function (index) {\n var tag = $scope.user_tags[index];\n var index2 = $scope.user.tags.indexOf(tag._id);\n if (tag && index2 > -1) {\n $scope.user.tags.splice(index2, 1);\n $scope.user_tags.splice(index, 1);\n user.tags = $scope.user.tags;\n }\n };\n\n // Save user data\n $scope.save = function (data) {\n Api.post('user/update', data, function (err, resp) {\n if (!err) {\n $scope.changeUser(user);\n App.toast(resp.response, 3000);\n }\n });\n };\n },\n\n inbox: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n var user_id = $scope.params.user ? $scope.params.user : '';\n window.location.href = '/v2/user/conversations/' + user_id;\n return;\n }\n };\n})();\n","var projectCtrl = (function () {\n return {\n project: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n var change = false;\n $scope.$watch('project.welcome_message.persona', function (oldValue, newValue) {\n var isUndefined = typeof newValue === 'undefined' || typeof oldValue === 'undefined';\n if (change) {\n return;\n }\n if (isUndefined) {\n return;\n }\n if (oldValue._id === newValue._id) {\n return;\n }\n change = true;\n var index = $scope.project.admins.findIndex((x) => x._id === newValue._id);\n $scope.project.welcome_message.persona = $scope.project.admins[index];\n });\n\n $scope.languages = [\n {\n title: 'PT',\n value: 'pt-br'\n },\n {\n title: 'EN',\n value: 'en'\n }\n ];\n\n $translate('GLOBAL.LANGUAGE_TITLE_PT').then(function (result) {\n $scope.languages[0].title = result;\n });\n\n $translate('GLOBAL.LANGUAGE_TITLE_EN').then(function (result) {\n $scope.languages[1].title = result;\n });\n\n $scope.preSave = function (data) {\n if (data.domain) {\n data.domain = data.domain.replace(/(^([ ]*)?(http[s]?:\\/\\/)?(www\\.)?)|[ ]*$/g, '');\n }\n };\n },\n\n colors: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.colors = {\n primary: '42A5F5',\n secondary: '1976D2',\n header: 'FFFFFF',\n headerIcon: 'A0A0A0'\n };\n\n var pickerS, pickerP, pickerH, pickerI;\n var changeColors = function (mode, color) {\n $(`.${mode}-bg`).css('background-color', '#' + color.replace(/#/, ''));\n\n function convertHex(hex, opacity) {\n hex = hex.replace('#', '');\n let r = parseInt(hex.substring(0, 2), 16);\n let g = parseInt(hex.substring(2, 4), 16);\n let b = parseInt(hex.substring(4, 6), 16);\n return 'rgba(' + r + ',' + g + ',' + b + ',' + opacity / 100 + ')';\n }\n\n if (mode == 'primary') {\n $('.primary-bg.bg-light').css('background-color', convertHex(color, 90));\n }\n\n if (mode == 'header') {\n $('.header-bg').css('background-color', '#' + color.replace(/#/, ''));\n }\n\n if (mode == 'headerIcon') {\n $('.header-text').css('color', '#' + color.replace(/#/, ''));\n $('.header-bg').css('color', '#' + color.replace(/#/, ''));\n }\n\n $(`.${mode}-bg-hover`).hover(\n function () {\n $(this).css('background-color', '#' + color.replace(/#/, ''));\n },\n function () {\n $(this).css({\n 'background-color': 'transparent'\n });\n }\n );\n\n $(`.${mode}-border`).css('border-color', '#' + color.replace(/#/, ''));\n $(`.${mode}-border-hover`).hover(\n function () {\n $(this).css('border-color', '#' + color.replace(/#/, ''));\n },\n function () {\n $(this).css({\n 'border-color': '#A0A0A0'\n });\n }\n );\n\n $(`.${mode}-bg`).css('border', '');\n\n if (color.toLowerCase() === 'ffffff') {\n $(`.${mode}-bg`).css('border', '1px solid #A8A8A8');\n }\n\n $(`.set-${mode}`).val(color);\n };\n var updateP = function () {\n pickerP.set('#' + this.value.replace(/#/g, '')).enter();\n };\n var updateS = function () {\n pickerS.set('#' + this.value.replace(/#/g, '')).enter();\n };\n var updateH = function () {\n pickerH.set('#' + this.value.replace(/#/g, '')).enter();\n };\n var updateI = function () {\n pickerI.set('#' + this.value.replace(/#/g, '')).enter();\n };\n\n // Get appearance data\n Api.get(`project/${$scope.project_data.key}/appearance`, function (err, resp) {\n if (!err) {\n $scope.appearance = resp.response.data;\n $scope.colors.primary = resp.response.data.primary_color.replace(/#/, '');\n $scope.colors.secondary = resp.response.data.secondary_color.replace(/#/, '');\n $scope.colors.header = resp.response.data.header_color.replace(/#/, '');\n $scope.colors.headerIcon = resp.response.data.header_color_icon.replace(/#/, '');\n pickerP = new CP(document.querySelector('#firstcolor'));\n pickerP.set('#' + $scope.colors.primary.replace(/#/g, ''));\n pickerP.on('change', function (color) {\n this.target.value = color;\n $scope.colors.primary = color;\n changeColors('primary', color);\n });\n pickerP.target.oncut = updateP;\n pickerP.target.onpaste = updateP;\n pickerP.target.onkeyup = updateP;\n pickerP.target.oninput = updateP;\n\n pickerS = new CP(document.querySelector('#secondcolor'));\n pickerS.set('#' + $scope.colors.secondary.replace(/#/g, ''));\n pickerS.on('change', function (color) {\n this.target.value = color;\n $scope.colors.secondary = color;\n changeColors('secondary', color);\n });\n pickerS.target.oncut = updateS;\n pickerS.target.onpaste = updateS;\n pickerS.target.onkeyup = updateS;\n pickerS.target.oninput = updateS;\n\n pickerH = new CP(document.querySelector('#headercolor'));\n pickerH.set('#' + $scope.colors.header.replace(/#/g, ''));\n pickerH.on('change', function (color) {\n this.target.value = color;\n $scope.colors.header = color;\n changeColors('header', color);\n });\n pickerH.target.oncut = updateH;\n pickerH.target.onpaste = updateH;\n pickerH.target.onkeyup = updateH;\n pickerH.target.oninput = updateH;\n\n pickerI = new CP(document.querySelector('#headercolorIcon'));\n pickerI.set('#' + $scope.colors.headerIcon.replace(/#/g, ''));\n pickerI.on('change', function (color) {\n this.target.value = color;\n $scope.colors.headerIcon = color;\n changeColors('headerIcon', color);\n });\n pickerI.target.oncut = updateI;\n pickerI.target.onpaste = updateI;\n pickerI.target.onkeyup = updateI;\n pickerI.target.oninput = updateI;\n }\n });\n\n $scope.change = function (primary, secondary, header) {\n $scope.colors.primary = primary;\n $scope.colors.secondary = secondary;\n $scope.colors.header = header;\n $scope.colors.headerIcon = 'A0A0A0';\n changeColors('primary', primary);\n changeColors('secondary', secondary);\n changeColors('header', header);\n changeColors('headerIcon', 'A0A0A0');\n };\n\n // Save colors and generate new css\n $scope.save = function (colors) {\n $translate('PROJECT.COLORS_WAIT_TO_APPLY').then(function (result) {\n App.toast(result, Infinity);\n });\n $scope.appearance.primary_color = '#' + colors.primary;\n $scope.appearance.secondary_color = '#' + colors.secondary;\n $scope.appearance.header_color = '#' + colors.header;\n $scope.appearance.header_color_icon = '#' + colors.headerIcon;\n Api.put(`project/${$scope.project_data.key}/appearance`, $scope.appearance, function (err) {\n if (!err) {\n document.querySelectorAll('.toast').forEach((el) => el.remove());\n if (!err) {\n $translate('PROJECT.COLORS_SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n }\n });\n };\n },\n\n dashboard: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.dashboard = {};\n $scope.popular_tags = [];\n $scope.list_pending_articles = [];\n $scope.billing = {};\n\n // Get dashboard counters\n Api.get('analytics/dashboard', function (err, data) {\n if (!err) {\n $scope.dashboard = data.response;\n }\n });\n\n // Get popular tags\n Api.get('tag/counter?filter=POPULAR', function (err, data) {\n if (!err) $scope.popular_tags = data.response;\n });\n\n // // Get blogs\n if ($scope.project_data.plan.post_types_feature_enabled) {\n Api.get('blogs/get?all=ALL&page_size=4&sort=created', function (err, data) {\n if (!err)\n $scope.blogs = new NgTableParams(\n {},\n {\n counts: [],\n dataset: data.response\n }\n );\n });\n }\n\n // Get courses\n if ($scope.project_data.plan.courses_feature_enabled) {\n Api.get('course?scope=all&return_as=list&page_size=4&page=1&status=1', function (err, data) {\n if (!err)\n $scope.courses = new NgTableParams(\n {},\n {\n counts: [],\n dataset: data.response.data\n }\n );\n });\n }\n\n // // Get last 6 signed users\n Api.get(`user/list?signup_pending=false&page=1&page_size=6&sort_field=projects.${_bcp}.created&sort_order=DESC&only_profile=true`, function (err, ret) {\n if (!err) {\n var user_list = ret.response.data;\n for (var i = 0; i < user_list.length; i++) {\n var objDate = user_list[i].projects[_bcp].created ? new Date(user_list[i].projects[_bcp].created) : new Date(user_list[i].updated);\n user_list[i].created = objDate.toISOString();\n }\n $scope.list_signed_users = new NgTableParams(\n {},\n {\n counts: [],\n dataset: user_list\n }\n );\n }\n });\n\n // // Get last 4 published articles\n Api.get('article/list?mode=ALL&page=1&page_size=4&sort_field=publish&sort_order=DESC&status=PUBLISHED', function (err, data) {\n if (!err) {\n var article_list = data.response.data;\n for (var i = 0; i < article_list.length; i++) {\n var objDate = new Date(article_list[i].publish);\n article_list[i].publish = objDate.toISOString();\n }\n $scope.list_published_articles = new NgTableParams(\n {},\n {\n counts: [],\n dataset: article_list\n }\n );\n }\n });\n\n // // Get signups\n var objDate = new Date();\n var today = objDate.toISOString();\n var last1 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last2 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last3 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last4 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last5 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last6 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last7 = new Date(objDate.setDate(objDate.getDate() - 1)).toISOString();\n var last14 = new Date(objDate.setDate(objDate.getDate() - 7)).toISOString();\n\n Api.get(`analytics/counters?axis=signups&begin=${last7}&end=${today}`, function (err, resp) {\n if (!err) $scope.signups_day = resp.response / 7;\n });\n Api.get(`analytics/counters?axis=signups&begin=${last14}&end=${last7}`, function (err, resp) {\n if (!err) $scope.signups_last_week_by_day = resp.response / 7;\n });\n\n var columns = [['date'], ['Cadastros']];\n\n var signups_chart = c3.generate({\n bindto: '#graph-signups',\n data: {\n x: 'date',\n columns: columns,\n type: 'bar'\n },\n legend: {\n show: false\n },\n axis: {\n x: {\n show: false,\n type: 'timeseries',\n tick: {\n format: '%d/%m'\n }\n },\n y: {\n show: false\n }\n },\n size: {\n height: 120\n }\n });\n\n Api.get(`analytics/counters?axis=signups&begin=${today.split('T')[0] + 'T00:00:01.000Z'}&end=${today.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(today.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last1.split('T')[0] + 'T00:00:01.000Z'}&end=${last1.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last1.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last2.split('T')[0] + 'T00:00:01.000Z'}&end=${last2.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last2.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last3.split('T')[0] + 'T00:00:01.000Z'}&end=${last3.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last3.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last4.split('T')[0] + 'T00:00:01.000Z'}&end=${last4.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last4.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last5.split('T')[0] + 'T00:00:01.000Z'}&end=${last5.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last5.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n Api.get(`analytics/counters?axis=signups&begin=${last6.split('T')[0] + 'T00:00:01.000Z'}&end=${last6.split('T')[0] + 'T23:59:59.000Z'}`, function (err, resp) {\n if (!err) {\n columns[0].push(last6.split('T')[0]);\n columns[1].push(resp.response);\n signups_chart.load({\n columns: columns\n });\n }\n });\n },\n\n digest: function ($scope, Api) {\n var report = function (month) {\n if (!$scope.project_data.plan.analytics_feature_enabled) return false;\n Api.get(`analytics/digests?month=${month}`, function (err, resp) {\n if (!err) {\n $scope.month_counters = resp.response.totals;\n $scope.month_digests = resp.response.analytics;\n $scope.month_counters.click_rate = ($scope.month_counters.clicks_count * 100) / $scope.month_counters.users_count;\n } else {\n $scope.month_counters = false;\n $scope.month_digests = false;\n }\n });\n };\n $scope.$watch('month', function (month) {\n if (month && $scope.project_data.plan.analytics_feature_enabled) report(month);\n });\n },\n\n home: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.homeCb = function () {\n var path = `https://${_bcp}.redesign.static-01.com`;\n if (!$scope.banner) $scope.banner = {};\n if ($scope.banner.image) $scope.banner.url_image = `${path}/l/images/${$scope.banner.image}`;\n else $scope.banner.url_image = 'https://56e9af4bb89f1d73465cbd39.redesign.static-01.com/images/66e30a7b4b7c338c3caa312eb7ee8dd513c5f953.png';\n if ($scope.banner.image_mobile) $scope.banner.url_image_mobile = `${path}/l/images/${$scope.banner.image_mobile}`;\n if (!$scope.banner.url) $scope.banner.link = 0;\n else if ($scope.banner.url == '/signup') $scope.banner.link = 1;\n else {\n $scope.banner.link = 2;\n $scope.banner.external_url = $scope.banner.url;\n }\n $scope.banner.alignment = $scope.banner.alignment ? $scope.banner.alignment : 'left';\n $scope.banner.text_size = $scope.banner.text_size ? $scope.banner.text_size : 48;\n };\n\n $scope.preSave = function (banner) {\n // if(banner.link==0) {\n // banner.url = '';\n // } else if(banner.link==1) {\n // banner.url = '/signup';\n // } else banner.url = banner.external_url;\n\n // Fix link to signup\n banner.url = '/signup';\n banner.link = 1;\n\n delete banner.external_url;\n delete banner.url_image;\n delete banner.url_image_mobile;\n };\n\n $scope.posSave = function () {\n $scope.loadData('project/banner', 'banner', 'response.banner', $scope.homeCb);\n $translate('PROJECT.BANNER_UPDATE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n };\n },\n\n integrations: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify) {\n $scope.integrations = {\n facebook_app_id: null,\n google_analytics: null,\n google_console_verification_code: null,\n google_tag_manager: null,\n iugu_connected_account: null,\n linkedin_organization_id: null,\n mailchimp_list_id: null,\n mailchimp_token: null,\n rdstation_monitoring_code: null,\n rdstation_token: null,\n stripe_connected_account: null\n };\n\n $scope.mailchimpList = [];\n $scope.saving = false;\n\n $scope.list = [\n {\n title: 'Google Analytics',\n modal: '#modal-analytics',\n status: false\n },\n {\n title: 'Google tag Manager',\n modal: '#modal-tagmanager',\n status: false\n },\n {\n title: 'Google Console',\n modal: '#modal-console',\n status: false\n },\n {\n title: 'RDStation',\n modal: '#modal-rdstation',\n status: false\n },\n {\n title: 'MailChimp',\n modal: '#modal-mailchimp',\n status: false\n },\n {\n title: 'Linkedin',\n modal: '#modal-linkedin',\n status: false\n }\n ];\n\n $scope.open = function (obj) {\n $(obj).openModal();\n };\n\n // Get integrations\n Api.get('integrations/google-analytics', function (err, resp) {\n if (!err) {\n $scope.integrations.google_analytics = resp.response.data;\n $scope.list[0].status = $scope.integrations.google_analytics ? true : false;\n }\n });\n\n Api.get('integrations/google-tag-manager', function (err, resp) {\n if (!err) {\n $scope.integrations.google_tag_manager = resp.response.data;\n $scope.list[1].status = $scope.integrations.google_tag_manager ? true : false;\n }\n });\n\n Api.get('integrations/google-console', function (err, resp) {\n if (!err) {\n $scope.integrations.google_console_verification_code = resp.response.data;\n $scope.list[2].status = $scope.integrations.google_console_verification_code ? true : false;\n }\n });\n\n Api.get('integrations/rdstation', function (err, resp) {\n if (!err) {\n $scope.integrations.rdstation_token = resp.response.data.token;\n $scope.integrations.rdstation_monitoring_code = resp.response.data.monitoring_code;\n $scope.list[3].status = $scope.integrations.rdstation_token ? true : false;\n }\n });\n\n Api.get('integrations/mailchimp', function (err, resp) {\n if (!err) {\n $scope.integrations.mailchimp_token = resp.response.data.token;\n $scope.integrations.mailchimp_list_id = resp.response.data.list_id || '';\n $scope.list[4].status = $scope.integrations.google_console_verification_code ? true : false;\n $scope.onChangeMailChimpToken($scope.integrations.mailchimp_token);\n }\n });\n\n Api.get('integrations/linkedin', function (err, resp) {\n if (!err) {\n $scope.integrations.linkedin_organization_id = resp.response.data;\n $scope.list[5].status = $scope.integrations.linkedin_organization_id ? true : false;\n }\n });\n\n // Save integrations\n\n $scope.saveLinkedin = function (organizationId) {\n const data = {\n organization_id: organizationId\n };\n $scope.saving = true;\n Api.post('integrations/linkedin', data, function (err, resp) {\n if (!err) {\n $scope.integrations.linkedin_organization_id = organizationId;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.saveRdstation = function (code, monitoring_code) {\n const data = {\n token: code,\n monitoring_code: monitoring_code\n };\n $scope.saving = true;\n Api.put('integrations/rdstation', data, function (err, resp) {\n if (!err) {\n $scope.integrations.rdstation_token = code;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.saveGoogleAnalytics = function (token) {\n const data = {\n token: token\n };\n $scope.saving = true;\n Api.put('integrations/google-analytics', data, function (err, resp) {\n if (!err) {\n $scope.integrations.google_analytics = token;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.saveGoogleTagManager = function (token) {\n const data = {\n token: token\n };\n $scope.saving = true;\n Api.put('integrations/google-tag-manager', data, function (err, resp) {\n if (!err) {\n $scope.integrations.google_tag_manager = token;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.saveMailchimp = function (token, list_id) {\n const data = {\n token: token,\n list_id: list_id\n };\n $scope.saving = true;\n Api.put('integrations/mailchimp', data, function (err, resp) {\n if (!err) {\n $scope.integrations.mailchimp_token = token;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.saveGoogleSearchConsole = function (token) {\n const data = {\n token: token\n };\n $scope.saving = true;\n Api.put('integrations/google-console', data, function (err, resp) {\n if (!err) {\n $scope.integrations.google_console = token;\n $translate('PROJECT.SAVE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n $scope.saving = false;\n $('.modal.open .modal-close').trigger('click');\n });\n };\n\n $scope.loadingAudience = false;\n $scope.onChangeMailChimpToken = function (token) {\n if (token) {\n $scope.loadingAudience = true;\n Api.get(`integrations/mailchimp/audience/list?token=${token}`, function (err, resp) {\n if (!err) {\n $scope.mailchimpList = resp.response.data.lists;\n $scope.loadingAudience = false;\n } else {\n $scope.loadingAudience = false;\n $translate('PROJECT.GET_MAILCHIMP_LIST_ERROR').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n }\n };\n },\n\n footerMenu: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.newlink = {};\n\n // Change sort\n $scope.sort = function () {\n var sort = [];\n $('.collection-sortable li').each(function () {\n sort.push($(this).attr('id'));\n });\n Api.put('project/menu', {\n type: 'footer',\n sort: sort\n });\n };\n $scope.sortableOptions = {\n update: function (e, ui) {\n $scope.sort();\n }\n };\n\n // Add item\n $scope.add = function (newlink) {\n if (!newlink.title || !newlink.url) {\n $translate('PROJECT.LINK_ADD_INVALID_FIELDS').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n }\n newlink.type = 'footer';\n Api.post('project/menu', newlink, function (err, resp) {\n if (!err) {\n $scope.newlink = {};\n $scope.loadData('project/menu?type=footer', 'menu');\n $translate('PROJECT.LINK_ADD_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n\n // Remove item\n $scope.remove = function (signature) {\n Api.delete(`project/menu/${signature}`, function (err, resp) {\n if (!err) {\n $scope.loadData('project/menu?type=footer', 'menu');\n $translate('PROJECT.LINK_DELETE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n },\n\n headerMenu: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.newlink = {};\n\n // Change sort\n $scope.sort = function () {\n var sort = [];\n $('.collection-sortable li').each(function () {\n sort.push($(this).attr('id'));\n });\n Api.put('project/menu', {\n type: 'header',\n sort: sort\n });\n };\n $scope.sortableOptions = {\n update: function (e, ui) {\n $scope.sort();\n }\n };\n\n // Add item\n $scope.add = function (newlink) {\n if (!newlink.title || !newlink.url) {\n $translate('PROJECT.LINK_ADD_INVALID_FIELDS').then(function (result) {\n App.toast(result, 3000);\n });\n return false;\n }\n newlink.type = 'header';\n Api.post('project/menu', newlink, function (err, resp) {\n if (!err) {\n $scope.newlink = {};\n $scope.loadData('project/menu?type=header', 'menu');\n $translate('PROJECT.LINK_ADD_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n\n // Remove item\n $scope.remove = function (signature) {\n Api.delete(`project/menu/${signature}`, function (err, resp) {\n if (!err) {\n $scope.loadData('project/menu?type=header', 'menu');\n $translate('PROJECT.LINK_DELETE_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n },\n\n homeMessage: function ($scope, Api) {\n $scope.loading = 1;\n $scope.contentCB = function () {\n $scope.loading = 0;\n };\n },\n\n footerMessage: function ($scope, Api) {\n $scope.loading = 1;\n $scope.contentCB = function () {\n $scope.loading = 0;\n };\n },\n\n header: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.loading = 1;\n\n ace.require('ace/ext/language_tools');\n\n let beautify = ace.require('ace/ext/beautify');\n let dom = ace.require('ace/lib/dom');\n\n ace.require('ace/commands/default_commands').commands.push({\n name: 'Toggle Fullscreen',\n bindKey: 'F11',\n exec: function (editor) {\n let fullScreen = dom.toggleCssClass(document.body, 'fullScreen');\n dom.setCssClass(editor.container, 'fullScreen', fullScreen);\n editor.setAutoScrollEditorIntoView(!fullScreen);\n editor.resize();\n }\n });\n\n let editor = ace.edit('editor');\n\n editor.session.setMode('ace/mode/html');\n editor.setTheme('ace/theme/pastel_on_dark');\n editor.setOptions({\n enableBasicAutocompletion: true,\n enableSnippets: true,\n enableLiveAutocompletion: true,\n showPrintMargin: false,\n showDisplayIndentGuides: true,\n autoScrollEditorIntoView: true\n });\n\n $scope.contentCB = function () {\n $scope.loading = 0;\n editor.setValue($scope.project.header_content, 0);\n beautify.beautify(editor.session);\n };\n $scope.loadData('project/general_data', 'project', 'response', $scope.contentCB);\n $scope.saveData = function () {\n $scope.project.header_content = editor.getValue();\n let payload = $scope.project;\n delete payload._id;\n Api.put('project/general_data', payload, function (err, ret) {\n if (!err) {\n $translate('MESSAGES.OK_DEFAULT').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n },\n\n settings: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.preSave = function (payload) {\n if (!payload.settings.policies.hasOwnProperty('content_type') || payload.settings.policies.content_type.length == 0) {\n $translate('PROJECT.SETTINGS_UPDATE_INVALID_PAYLOAD').then(function (result) {\n App.toast(result, 3000);\n });\n return 'ERROR';\n }\n\n if (!payload.settings.policies.course_creation_role) {\n $translate('PROJECT.SETTINGS_UPDATE_INVALID_COURSE').then(function (result) {\n App.toast(result, 3000);\n });\n return 'ERROR';\n }\n };\n },\n\n projectMonetization: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.newUser = false;\n\n Api.get('project/monetization-account', function (err, ret) {\n if (!err) {\n $scope.newUser = ret.response.data;\n }\n });\n // Show user data from item select on suggest input\n $scope.preAddUserMonetization = function (user) {\n Api.get(`user/get/${user.id}`, function (err, data) {\n $scope.newUser = {\n account_id: user.accountId,\n user_id: data.response._id,\n user_name: data.response.name,\n user_email: data.response.email,\n user_slug: data.response.slug,\n user_image: data.response.image\n };\n });\n };\n\n $scope.save = function () {\n const data = {\n target_monetization_account_id: $scope.newUser.account_id\n };\n Api.put('project/monetization-account', data, function (err, ret) {\n if (!err) {\n $translate('MESSAGES.OK_DEFAULT').then(function (result) {\n App.toast(result, 3000);\n });\n }\n });\n };\n },\n\n projectSettingsNPS: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n const ngInit = () => {\n Api.get('custom-survey-questions?show_disabled=false', function (err, resp) {\n if (!err) {\n $scope.questions = resp.response.data;\n }\n });\n };\n\n ngInit();\n\n $scope.saveQuestion = (item) => {\n Api.post('custom-survey-questions', item, function (err, resp) {\n if (!err) {\n $translate('MESSAGES.ARTICLE_SAVED').then(function (result) {\n App.toast(result, 3000);\n });\n Api.get('custom-survey-questions?show_disabled=false', function (err, resp) {\n if (!err) {\n $scope.questions = resp.response.data;\n }\n });\n } else {\n $translate('MESSAGES.FAIL_DEFAULT').then(function (result) {\n App.toastError(result, 3000);\n });\n }\n });\n };\n\n $scope.removeQuestion = (item) => {\n Api.delete(`custom-survey-questions/${item.id}`, function (err, resp) {\n if (!err) {\n $translate('MESSAGES.ARTICLE_DELETED').then(function (result) {\n App.toast(result, 3000);\n });\n Api.get('custom-survey-questions?show_disabled=false', function (err, resp) {\n if (!err) {\n $scope.questions = resp.response.data;\n }\n });\n } else {\n $translate('MESSAGES.FAIL_DEFAULT').then(function (result) {\n App.toastError(result, 3000);\n });\n }\n });\n };\n\n let updatingQuestions = false;\n $scope.updateQuestion = () => {\n if (updatingQuestions) clearTimeout(updatingQuestions);\n updatingQuestions = window.setTimeout(function () {\n var payload = {\n questions_ids_in_answering_order: []\n };\n $('.questions-sortable > div.questions-item').each(function () {\n const questObj = $(this);\n const questId = questObj.attr('data-questionid');\n if (questId) payload.questions_ids_in_answering_order.push(questId);\n });\n Api.put(`custom-survey-questions/project/answering-order`, payload, function (err, resp) {\n if (err) {\n $translate('GLOBAL.ERROR').then((result) => App.toastError(result, 5000));\n }\n ngInit();\n });\n }, 2000);\n };\n\n $scope.questionSortableOptions = {\n handle: '.handle',\n connectWith: '.questions-sortable',\n out: $scope.updateQuestion\n };\n }\n };\n})();\n","var userCtrl = (function () {\n return {\n approval: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.users = false;\n $scope.currentPage = 1;\n $scope.pages = 0;\n $scope.searchKw = '';\n\n // User Counters\n var counters = function () {\n $scope.counters = {\n COMMUNITY: 0,\n GROUPS_ADM: 0,\n GROUPS_NOADM: 0,\n COURSES_ADM: 0,\n COURSES_NOADM: 0\n };\n var counter = function (key) {\n var requestUrl = 'user/counter';\n\n if (key == 'COMMUNITY') requestUrl = 'user/counter?signup_pending=true';\n else if (key == 'GROUPS_ADM') requestUrl = 'user/counter?signup_pending=true&scope=my_groups';\n else if (key == 'GROUPS_NOADM') requestUrl = 'user/counter?signup_pending=true&scope=others_groups';\n else if (key == 'COURSES_ADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=my_courses';\n else if (key == 'COURSES_NOADM') requestUrl = 'course/users?return_as=count&signup_pending=true&scope=others_courses';\n\n Api.get(requestUrl, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n };\n if ($scope.$parent.currentUser.role === 'ADM') for (var key in $scope.counters) counter(key);\n else {\n if ($scope.$parent.currentUser.is_group_adm) counter('GROUPS_ADM');\n if ($scope.$parent.currentUser.is_course_adm) counter('COURSES_ADM');\n }\n };\n counters();\n\n $scope.searchFilter = 'GROUPS_ADM';\n $scope.list = function (page, kw, filter) {\n $scope.users = false;\n $scope.last = true;\n $scope.currentPage = page;\n $scope.searchFilter = filter;\n $scope.searchKw = kw;\n if (kw !== '') {\n $translate('USER.STATUS_FILTER').then(function (result) {\n $scope.filter_label = result;\n });\n }\n\n $scope.searchFilter = filter;\n\n var requestUrl = 'user/list';\n var additionalQueryParams = '';\n\n if (filter == 'COMMUNITY') additionalQueryParams = 'signup_pending=true';\n else if (filter == 'GROUPS_ADM') additionalQueryParams = 'signup_pending=true&scope=my_groups';\n else if (filter == 'GROUPS_NOADM') additionalQueryParams = 'signup_pending=true&scope=others_groups';\n else if (filter == 'COURSES_ADM') {\n requestUrl = 'course/users';\n additionalQueryParams = 'signup_pending=true&scope=my_courses';\n } else if (filter == 'COURSES_NOADM') {\n requestUrl = 'course/users';\n additionalQueryParams = 'signup_pending=true&scope=others_courses';\n }\n\n Api.get(`${requestUrl}?return_as=list&page=${page}&page_size=10&sort_field=name&sort_order=ASC&filter=${kw}&${additionalQueryParams}`, function (err, resp) {\n if (!err) {\n $scope.users = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n }\n });\n };\n $scope.filter_label = '';\n $scope.searchFilter_label = {\n COMMUNITY: '',\n GROUPS_ADM: '',\n GROUPS_NOADM: '',\n COURSES_ADM: '',\n COURSES_NOADM: ''\n };\n $translate('USER.SEARCH_FILTER_COMMUNITY').then(function (result) {\n $scope.searchFilter_label['COMMUNITY'] = result;\n });\n $translate('USER.SEARCH_FILTER_GROUPS_ADM').then(function (result) {\n $scope.searchFilter_label['GROUPS_ADM'] = result;\n });\n $translate('USER.SEARCH_FILTER_GROUPS_NOADM').then(function (result) {\n $scope.searchFilter_label['GROUPS_NOADM'] = result;\n });\n $translate('USER.SEARCH_FILTER_COURSES_ADM').then(function (result) {\n $scope.searchFilter_label['COURSES_ADM'] = result;\n });\n $translate('USER.SEARCH_FILTER_COURSES_NOADM').then(function (result) {\n $scope.searchFilter_label['COURSES_NOADM'] = result;\n });\n\n $scope.approve = function (user) {\n if (user.hasOwnProperty('course')) {\n Api.put(`courses/${user.course._id}/users/${user._id}/enrollment`, { signup_pending: false }, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n } else if (user.hasOwnProperty('group')) {\n Api.put(`user/link_to_group/${user._id}`, { signup_pending: false, page_id: user.group._id }, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n } else {\n Api.put(`user/link_to_project/${user._id}`, { signupPending: false }, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n }\n };\n\n $scope.delete = function (user) {\n if (user.hasOwnProperty('course')) {\n Api.delete(`courses/${user.course._id}/users/${user._id}/enrollment`, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_FAIL').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n } else if (user.hasOwnProperty('group')) {\n Api.put(`user/link_to_group/${user._id}`, { action: 'delete', page_id: user.group._id }, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_FAIL').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n } else {\n Api.delete(`user/link_to_project/${user._id}`, function (err, ret) {\n if (!err) {\n $translate('USER.SIGNUP_FAIL').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n counters();\n }\n });\n }\n };\n\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n },\n\n user: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.users = false;\n $scope.currentPage = 1;\n $scope.pages = 0;\n $scope.searchKw = '';\n\n // User Counters\n var counters = function () {\n $scope.counters = {\n ALL: 0,\n POSTS: 0,\n GROUPS: 0,\n ADM: 0,\n EDITOR: 0\n };\n var counter = function (key) {\n var call = '';\n if (key == 'ADM') call = 'role=ADM';\n else if (key == 'EDITOR') call = 'role=EDITOR';\n else if (key == 'POSTS') call = 'has_posts=true';\n else if (key == 'GROUPS') call = 'has_groups=true';\n Api.get(`user/counter?${call}`, function (err, resp) {\n if (!err) $scope.counters[key] = resp.response;\n });\n };\n for (var key in $scope.counters) counter(key);\n };\n counters();\n\n $scope.searchFilter = 'ALL';\n $scope.searchLoading = false;\n $scope.list = function (page, kw, filter) {\n $scope.searchLoading = true;\n $scope.users = false;\n $scope.last = true;\n $scope.currentPage = page;\n $scope.searchFilter = filter;\n $scope.searchKw = kw;\n if (kw !== '') $scope.filter_label = 'filtrados';\n $scope.searchFilter = filter;\n var user_filter = '';\n if (filter == 'ADM') user_filter = 'role=ADM';\n else if (filter == 'EDITOR') user_filter = 'role=EDITOR';\n else if (filter == 'POSTS') user_filter = 'has_posts=true';\n else if (filter == 'GROUPS') user_filter = 'has_groups=true';\n Api.get(`user/list?signup_pending=false&page=${page}&page_size=30&sort_field=name&sort_order=ASC&filter=${kw}&${user_filter}`, function (err, resp) {\n if (!err) {\n $scope.users = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 30);\n }\n $scope.searchLoading = false;\n });\n };\n $scope.filter_label = '';\n $scope.searchFilter_label = {\n ALL: '',\n POSTS: '',\n GROUPS: '',\n ADM: '',\n EDITOR: ''\n };\n $translate('USER.SERACH_USER_FILTER_ALL').then(function (result) {\n $scope.searchFilter_label['ALL'] = result;\n });\n $translate('USER.SERACH_USER_FILTER_POSTS').then(function (result) {\n $scope.searchFilter_label['POSTS'] = result;\n });\n $translate('USER.SERACH_USER_FILTER_GROUPS').then(function (result) {\n $scope.searchFilter_label['GROUPS'] = result;\n });\n $translate('USER.SERACH_USER_FILTER_ADM').then(function (result) {\n $scope.searchFilter_label['ADM'] = result;\n });\n $translate('USER.SERACH_USER_FILTER_EDITOR').then(function (result) {\n $scope.searchFilter_label['EDITOR'] = result;\n });\n\n $scope.addUser = function (newUser, Form) {\n if (Form.$invalid) return false;\n if (!newUser.role) newUser.role = 'USR';\n Api.post('user/create', newUser, function (err, resp) {\n if (!err) {\n $translate('USER.ADD_USER_SUCCESS').then(function (result) {\n App.toast(result, 3000);\n });\n $('#adduser').closeModal();\n counters();\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n }\n });\n };\n\n $scope.list(1, $scope.searchKw, $scope.searchFilter);\n },\n\n blocked: function ($scope, Api) {\n $scope.users = false;\n $scope.total = false;\n $scope.currentPage = 1;\n $scope.pages = 0;\n $scope.searchKw = '';\n\n $scope.userTotal = 0;\n Api.get(`user/counter?banned=true`, function (err, resp) {\n if (!err) $scope.userTotal = resp.response;\n });\n\n $scope.list = function (page, kw) {\n $scope.users = false;\n $scope.last = true;\n $scope.currentPage = page;\n $scope.searchKw = kw;\n if (kw !== '') $scope.filter_label = 'filtrados';\n Api.get(`user/list?signup_pending=false&page=${page}&page_size=10&sort_field=name&sort_order=ASC&filter=${kw}&banned=true`, function (err, resp) {\n if (!err) {\n $scope.users = resp.response.data;\n $scope.total = resp.response.total;\n $scope.pages = Math.ceil(resp.response.total / 10);\n }\n });\n };\n $scope.filter_label = '';\n\n $scope.list(1, $scope.searchKw);\n },\n\n userDetail: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n // Post count\n $scope.post_count = 0;\n $scope.course = [];\n $scope.courseFilter = '';\n $scope.courseGroupFilter = '';\n $scope.courseGroups = [];\n $scope.currentTab = 'tab-1';\n $scope.dateFormat = 'MM/dd/yyyy';\n if (bcp.settings.language === 'pt-br') {\n $scope.dateFormat = 'dd/MM/yyyy';\n }\n $scope.statistics = {\n progress: 0,\n total_access: 0,\n total_classes: 0,\n total_completed_classes: 0\n };\n // TAB BADGES\n $scope.badgesAssigned = [];\n $scope.badgesAssignedTotal = 0;\n $scope.badgesNotAssigned = [];\n $scope.badgesNotAssignedTotal = 0;\n $scope.loadingBadges = false;\n\n // ENDTAB BADGES\n\n // TAB NPS\n $scope.courses = [];\n $scope.courseId = null;\n $scope.classNPS = '';\n $scope.loadingNPS = false;\n $scope.currentPageNPS = 1;\n $scope.totalClassesNPS = 0;\n $scope.reviewType = null;\n $scope.questionType = null;\n\n $scope.changeQuestion = function (filterQuestionSelected) {\n $scope.filterQuestionSelected = filterQuestionSelected.id;\n $scope.questionType = filterQuestionSelected.question_type;\n };\n\n $scope.changeCourse = function (courseId) {\n $scope.courseId = courseId;\n };\n\n $scope.getQuestionsNPS = function () {\n Api.get('custom-survey-questions/lightweight/all', function (err, ret) {\n if (!err) {\n $scope.questions = ret.response.data;\n }\n });\n };\n\n $scope.getQuestionsNPS();\n\n Api.get(`course?scope=all&return_as=list&sort_order=DESC&sort_field=title&page_size=1000&page=1`, function (err, resp) {\n if (!err) {\n $scope.courses = resp.response.data;\n $scope.courseId = $scope.courses[0].id;\n }\n });\n\n $scope.getUserNPS = function (page, pageSize) { \n $scope.loadingNPS = true;\n Api.get(`user_experience_review/questions/${$scope.filterQuestionSelected}/users/${$scope.id}/classes?course_id=${$scope.courseId}&page=${page}&page_size=${pageSize}`, function (err, resp) {\n if (!err) {\n $scope.classNPS = resp.response.data.reviews;\n $scope.totalClassesNPS = resp.response.data.total;\n }\n $scope.loadingNPS = false; \n });\n };\n // End Tab NPS\n\n Api.get(`article/counter?status=PUBLISHED&mode=ALL&user_id=${$scope.id}`, function (err, resp) {\n if (!err) $scope.post_count = resp.response;\n });\n\n $scope.changeTab = function (tab) {\n $('ul.tabs').tabs('select_tab', tab);\n };\n\n // Change user role\n $scope.role = function (role) {\n var payload = { role: role };\n Api.put(`user/role/${$scope.id}`, payload, function (err, resp) {\n if (!err) {\n $translate('MESSAGES.ROLE_UPDATED').then(function (result) {\n App.toast(result, 3000);\n });\n $scope.user.role = role;\n }\n });\n };\n\n // Block / Unblock user\n $scope.block = function (banned) {\n if (banned == 0) {\n Api.post(`user/block`, { id: $scope.id }, function (err, resp) {\n $translate('MESSAGES.USER_BLOCKED').then(function (result) {\n App.toast(result, 3000);\n });\n App.toast(TXT.USER_BLOCKED, 3000);\n });\n } else {\n Api.delete(`user/block/${$scope.id}`, function (err, resp) {\n $translate('MESSAGES.USER_UNBLOCKED').then(function (result) {\n App.toast(result, 3000);\n });\n });\n }\n $scope.user.banned = banned === 1 ? 0 : 1;\n };\n\n $scope.loadCourseGroups = function (id) {\n if (id) {\n $scope.statistics = {\n progress: 0,\n total_access: 0,\n total_classes: 0,\n total_completed_classes: 0\n };\n Api.get(`user/${$scope.id}/courses/${id}/course-groups`, function (err, ret) {\n if (err) {\n $scope.courseGroups = [];\n return false;\n }\n $scope.courseGroups = ret.response.data;\n });\n }\n };\n\n $scope.getSummary = function (courseGroupId) {\n if (courseGroupId) {\n Api.get(`users/${$scope.id}/course-groups/${courseGroupId}/statistics/summary`, function (err, resp) {\n if (!err) {\n $scope.statistics = resp.response.data;\n }\n });\n }\n };\n\n // TAB BADGES\n $scope.getBadges = function () {\n $scope.loadingBadges = true;\n Api.get(`badges/users/${$scope.id}/associated?skip=0&take=100`, function (err, resp) {\n if (!err) {\n $scope.badgesAssociated = resp.response.data.badges;\n $scope.badgesAssignedTotal = resp.response.data.total;\n }\n $scope.loadingBadges = false;\n });\n\n $scope.loadingBadges = true;\n Api.get(`badges/users/${$scope.id}/not-associated?skip=0&take=100`, function (err, resp) {\n if (!err) {\n $scope.badgesNotAssociated = resp.response.data.badges;\n $scope.badgesNotAssignedTotal = resp.response.data.total;\n }\n $scope.loadingBadges = false;\n });\n };\n $scope.getBadges();\n\n $scope.assignBadge = function (badge) {\n badge.disabled = true;\n Api.post(`badges/${badge.id}/users/${$scope.id}`, {}, function (err, resp) {\n if (!err) {\n const index = $scope.badgesNotAssociated.indexOf(badge);\n if (index > -1) {\n $scope.badgesNotAssociated.splice(index, 1);\n }\n $scope.badgesAssociated.push(badge);\n $translate('USER.USER_ASSIGNED_BADGE').then(function (result) {\n App.toast(result, 3000);\n });\n }\n badge.disabled = false;\n });\n };\n\n $scope.removeBadge = function (badge) {\n badge.disabled = true;\n Api.delete(`badges/${badge.id}/users/${$scope.id}`, function (err, resp) {\n if (!err) {\n const index = $scope.badgesAssociated.indexOf(badge);\n if (index > -1) {\n $scope.badgesAssociated.splice(index, 1);\n }\n $scope.badgesNotAssociated.push(badge);\n $translate('USER.USER_REMOVED_BADGE').then(function (result) {\n App.toast(result, 3000);\n });\n }\n badge.disabled = false;\n });\n };\n // ENDTAB BADGES\n },\n\n userExport: function ($scope, Api, NgTableParams, ReqAndUpload, $q, $translate) {\n $scope.exports = [];\n $scope.exporting = false;\n $scope.groups = [];\n $scope.exportTypes = [];\n $scope.exportType = '';\n $translate(['CONTENT.MAIN_BLOG_TITLE', 'USER.USERS_EXPORT_TYPE_GROUPS', 'USER.USERS_EXPORT_TYPE_COURSES']).then(function (translations) {\n $scope.exportTypes.push({\n title: translations['CONTENT.MAIN_BLOG_TITLE'],\n value: 'community'\n });\n\n if ($scope.project_data.plan.groups_feature_enabled) {\n $scope.exportTypes.push({\n title: translations['USER.USERS_EXPORT_TYPE_GROUPS'],\n value: 'groups'\n });\n }\n\n if ($scope.project_data.plan.courses_feature_enabled) {\n $scope.exportTypes.push({\n title: translations['USER.USERS_EXPORT_TYPE_COURSES'],\n value: 'courses'\n });\n }\n\n $scope.exportType = $scope.exportTypes[0];\n });\n\n var list = function (id) {\n Api.get(`users/exports`, function (err, data) {\n if (!err) {\n var exports = data.response.data;\n for (var i = 0; i < exports.length; i++) {\n var date = new Date(exports[i].request_date);\n exports[i].request_date = date.toISOString();\n if (!exports[i].is_exported) $scope.exporting = true;\n }\n $scope.exports = exports;\n }\n });\n };\n if ($scope.project_data.plan.user_list_exportation_feature_enabled) list();\n\n $scope.download = function (id) {\n Api.get(`users/exports/${id}`, function (err, resp) {\n if (!err) window.location.href = resp.response.data;\n });\n };\n\n $scope.export = function (value) {\n const data = value ? { export_type: value } : {};\n Api.post('users/exports', data, function (err, data) {\n list();\n });\n };\n\n $scope.changeExportType = function (selectedType) {\n $scope.exportType = selectedType;\n };\n }\n };\n})();\n","var month2string = function (input) {\n var month = parseInt(input.toString().substr(4, 2)) - 1;\n var year = parseInt(input.toString().substr(0, 4));\n var dateObj = new Date(year, month);\n var language = bcp.settings.language === 'en' ? 'en-us' : language === 'pt' ? 'pt-br' : 'pt-br';\n var full_month = dateObj.toLocaleString(language, {month: 'long'});\n var full_year = dateObj.getFullYear();\n return full_month + '/' + full_year;\n}\n\nvar ngAnalyticsLineGraph = function (Api) {\n return {\n restrict: 'A',\n scope: {\n label: '@'\n },\n link: function (scope, elements, attr) {\n if (scope.disabled) return false;\n scope.graphId = `graph-${(Math.random() * 100000).toFixed(0)}`;\n var buildGraph = function (month) {\n scope.full_month = month2string(month);\n var query = `analytics/histograms?month=${month}&axis=${attr.axis}`;\n\n if (attr.user !== undefined && attr.user !== '') {\n query += `&user_id=${attr.user}`;\n }\n if (attr.article !== undefined && attr.article !== '') {\n query += `&article_id=${attr.article}`;\n }\n if (attr.page !== undefined && attr.page !== '') {\n query += `&page_id=${attr.page}`;\n }\n\n setTimeout(function () {\n var render_graph = c3.generate({\n // bindto: elements[0].childNodes[2],\n bindto: '#' + scope.graphId,\n data: {\n x: 'date',\n columns: []\n },\n tooltip: {\n format: {\n name: function (name, ratio, id, index) {\n return attr.label;\n }\n }\n },\n legend: {\n show: false\n },\n axis: {\n x: {\n type: 'timeseries',\n tick: {\n format: '%d/%m'\n }\n }\n },\n size: {\n // width: 885\n // width: elements[0].clientWidth\n }\n });\n\n var renderRedraw;\n $('.tab-charts .tab').click(function () {\n if (renderRedraw) clearTimeout(renderRedraw);\n renderRedraw = setTimeout(function () {\n render_graph.flush();\n });\n });\n Api.get(query, function (err, ret) {\n if (err) return\n\n var total = 0;\n var x = ['date'], main = ['main'];\n for (var i = 0; i < ret.response.length; i++) {\n x.push(ret.response[i].date);\n main.push(ret.response[i].count);\n total += ret.response[i].count;\n }\n scope.total = total;\n\n var columns = [];\n columns.push(x);\n columns.push(main);\n\n render_graph.load({columns: columns});\n });\n })\n }\n if (attr.hasOwnProperty('article')) {\n attr.$observe('article', function (article) {\n if (attr.month && article && scope.$parent.project_data.plan.analytics_feature_enabled) buildGraph(attr.month);\n });\n } else if (attr.hasOwnProperty('page')) {\n attr.$observe('page', function (page) {\n if (attr.month && page && scope.$parent.project_data.plan.analytics_feature_enabled) buildGraph(attr.month);\n });\n }\n attr.$observe('month', function (month) {\n if (month &&\n scope.$parent.project_data.plan.analytics_feature_enabled &&\n !attr.hasOwnProperty('article') || attr.article\n ) buildGraph(month);\n });\n\n },\n templateUrl:'@@src/manager/shared/dir.analytics/line_graph.html'\n }\n}\nngAnalyticsLineGraph.$inject = ['Api'];\n\nvar ngAnalyticsSingleCounter = function (Api) {\n return {\n restrict: 'A',\n scope: {\n label: '@'\n },\n link: function (scope, elements, attr) {\n var getCounter = function (month) {\n scope.full_month = month2string(month);\n var query = `analytics/counters?month=${month}&axis=${attr.axis}`;\n\n if (attr.user !== undefined && attr.user !== '') {\n query += `&user_id=${attr.user}`;\n }\n if (attr.article !== undefined && attr.article !== '') {\n query += `&article_id=${attr.article}`;\n }\n if (attr.page !== undefined && attr.page !== '') {\n query += `&page_id=${attr.page}`;\n }\n\n if (attr.course !== undefined && attr.course !== '' && attr.axis === 'users') {\n query = `course/${attr.course}/users?return_as=count&month=${month}&signup_pending=false&role=USR`;\n }\n if (attr.course !== undefined && attr.course !== '' && attr.axis === 'courses_annotations') {\n query = `course_annotation?return_as=count&course_id=${attr.course}&month=${month}`;\n }\n\n Api.get(query, function (err, ret) {\n if (!err) {\n if (ret.response && ret.response.data) {\n scope.counter = ret.response.data;\n } else {\n scope.counter = ret.response;\n }\n }\n });\n }\n if (attr.hasOwnProperty('article')) {\n attr.$observe('article', function (article) {\n if (attr.month && article && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter(attr.month);\n });\n } else if (attr.hasOwnProperty('page')) {\n attr.$observe('page', function (page) {\n if (attr.month && page && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter(attr.month);\n });\n }\n attr.$observe('month', function (month) {\n if (month &&\n scope.$parent.project_data.plan.analytics_feature_enabled &&\n !attr.hasOwnProperty('article') || attr.article\n ) getCounter(month);\n });\n },\n templateUrl:'@@src/manager/shared/dir.analytics/single_counter.html'\n }\n}\nngAnalyticsSingleCounter.$inject = ['Api'];\n\nvar ngAnalyticsTrafficSource = function (Api, NgTableParams, $translate) {\n return {\n restrict: 'A',\n scope: true,\n link: function (scope, elements, attr) {\n if (scope.disabled) return false;\n\n var getTrafficSource = function (month) {\n scope.full_month = month2string(month);\n var query = `analytics/lists?month=${month}&axis=traffic_source`;\n\n if (attr.user !== undefined && attr.user !== '') {\n query += `&user_id=${attr.user}`;\n }\n if (attr.article !== undefined && attr.article !== '') {\n query += `&article_id=${attr.article}`;\n }\n if (attr.page !== undefined && attr.page !== '') {\n query += `&page_id=${attr.page}`;\n }\n\n Api.get(query, function (err, ret) {\n var traffic_source = [];\n\n var translate_traffic = {\n 'organic': '',\n 'mail': '',\n 'reference': '',\n 'direct': '',\n 'display': '',\n 'social': '',\n 'push_notification': '',\n 'social_paid': '',\n 'other_ads': '',\n 'afiliate': '',\n 'search_paid': ''\n }\n $translate(['ANALYTICS.ORGANIC', 'ANALYTICS.MAIL', 'ANALYTICS.REFERENCE',\n 'ANALYTICS.DIRECT', 'ANALYTICS.DISPLAY', 'ANALYTICS.SOCIAL', 'ANALYTICS.PUSH_NOTIFICATION', 'ANALYTICS.SOCIAL_PAID',\n 'ANALYTICS.OTHER_ADS', 'ANALYTICS.AFILIATE', 'ANALYTICS.SEARCH_PAID']).then(function (translations) {\n translate_traffic['organic'] = translations['ANALYTICS.ORGANIC'];\n translate_traffic['mail'] = translations['ANALYTICS.MAIL'];\n translate_traffic['reference'] = translations['ANALYTICS.REFERENCE'];\n translate_traffic['direct'] = translations['ANALYTICS.DIRECT'];\n translate_traffic['display'] = translations['ANALYTICS.DISPLAY'];\n translate_traffic['social'] = translations['ANALYTICS.SOCIAL'];\n translate_traffic['push_notification'] = translations['ANALYTICS.PUSH_NOTIFICATION'];\n translate_traffic['social_paid'] = translations['ANALYTICS.SOCIAL_PAID'];\n translate_traffic['other_ads'] = translations['ANALYTICS.OTHER_ADS'];\n translate_traffic['afiliate'] = translations['ANALYTICS.AFILIATE'];\n translate_traffic['search_paid'] = translations['ANALYTICS.SEARCH_PAID'];\n\n for (var data in ret.response) {\n if (ret.response[data].visits && ret.response[data].visits > 0) {\n traffic_source.push({\n title: translate_traffic[data],\n reads: ret.response[data].reads,\n visits: ret.response[data].visits\n });\n }\n }\n if (traffic_source.length > 0) scope.traffic_source = new NgTableParams({sorting: {'visits': 'desc'}}, {counts: [], dataset: traffic_source});\n });\n });\n }\n if (attr.hasOwnProperty('article')) {\n attr.$observe('article', function (article) {\n if (attr.month && article && scope.$parent.project_data.plan.analytics_feature_enabled) getTrafficSource(attr.month);\n });\n }\n attr.$observe('month', function (month) {\n if (month &&\n scope.$parent.project_data.plan.analytics_feature_enabled &&\n !attr.hasOwnProperty('article') || attr.article\n ) getTrafficSource(month);\n });\n },\n templateUrl:'@@src/manager/shared/dir.analytics/traffic_source.html'\n }\n}\nngAnalyticsTrafficSource.$inject = ['Api', 'NgTableParams', '$translate'];\n\nvar ngAnalyticsList = function (Api, NgTableParams) {\n return {\n restrict: 'A',\n scope: {\n label: '@'\n },\n link: function (scope, elements, attr) {\n if (scope.disabled) return false;\n\n scope.image_path = scope.$parent.image_path;\n scope.user_path = scope.$parent.user_path;\n scope.list = false;\n var getList = function (month) {\n scope.full_month = month2string(month);\n var query = `analytics/lists?month=${month}&axis=${attr.axis}`;\n\n if (attr.user !== undefined && attr.user !== '') {\n query += `&user_id=${attr.user}`;\n }\n if (attr.article !== undefined && attr.article !== '') {\n query += `&article_id=${attr.article}`;\n }\n if (attr.page !== undefined && attr.page !== '') {\n query += `&page_id=${attr.page}`;\n }\n\n Api.get(query, function (err, ret) {\n if (!err && ret.response.length > 0) scope.list = new NgTableParams({sorting: {'sessions': 'desc'}}, {counts: [], dataset: ret.response});\n else scope.list = false;\n });\n }\n if (attr.hasOwnProperty('article')) {\n attr.$observe('article', function (article) {\n if (attr.month && article && scope.$parent.project_data.plan.analytics_feature_enabled) getList(attr.month);\n });\n }\n attr.$observe('month', function (month) {\n if (month &&\n scope.$parent.project_data.plan.analytics_feature_enabled &&\n !attr.hasOwnProperty('article') || attr.article\n ) getList(month);\n });\n },\n templateUrl: function (elements, attr) {\n var axis = {\n top_landing_posts: '@@src/manager/shared/dir.analytics/list_post.html',\n top_posts: '@@src/manager/shared/dir.analytics/list_post.html',\n top_authors: '@@src/manager/shared/dir.analytics/list_user.html',\n top_users: '@@src/manager/shared/dir.analytics/list_user.html',\n top_groups: '@@src/manager/shared/dir.analytics/list_group.html'\n }\n return axis[attr.axis]\n }\n }\n}\nngAnalyticsList.$inject = ['Api', 'NgTableParams'];\n\nvar ngAnalyticsLinesCounter = function (Api) {\n return {\n restrict: 'A',\n scope: {\n label_1st: '@label1st',\n label_2nd: '@label2nd'\n },\n link: function (scope, elements, attr) {\n if (scope.disabled) return false;\n\n var getCounter = function (line) {\n var query = `analytics/counters?axis=${attr[`axis${line}`]}`;\n\n if (attr.user !== undefined && attr.user !== '') {\n query += `&user_id=${attr.user}`;\n }\n if (attr.article !== undefined && attr.article !== '') {\n query += `&article_id=${attr.article}`;\n }\n if (attr.page !== undefined && attr.page !== '') {\n query += `&page_id=${attr.page}`;\n }\n if (attr.course !== undefined && attr.course !== '' && attr[`axis${line}`] === 'users') {\n query = `course/${attr.course}/users/?return_as=count&signup_pending=false&role=USR`;\n }\n if (attr.course !== undefined && attr.course !== '' && attr[`axis${line}`] === 'courses_classes') {\n query = `course_class?return_as=count&status=1&course_id=${attr.course}`;\n }\n scope.loadingCounter = true;\n\n Api.get(query, function (err, ret) {\n scope[`label_${line}`] = attr[`label${line}`];\n if (!err) {\n if (ret.response && ret.response.data) {\n scope[`counter_${line}`] = ret.response.data;\n } else {\n scope[`counter_${line}`] = ret.response;\n }\n }\n scope.loadingCounter = false;\n });\n }\n scope.icon = attr.icon || '';\n scope.size = attr.size || 's';\n if (attr.hasOwnProperty('article')) {\n attr.$observe('article', function (article) {\n if (article && 'axis1st' in attr && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter('1st');\n if (article && 'axis2nd' in attr && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter('2nd');\n });\n } else if (attr.hasOwnProperty('page')) {\n attr.$observe('page', function (page) {\n if (page && 'axis1st' in attr && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter('1st');\n if (page && 'axis2nd' in attr && scope.$parent.project_data.plan.analytics_feature_enabled) getCounter('2nd');\n });\n } else {\n if ('axis1st' in attr) getCounter('1st');\n if ('axis2nd' in attr) getCounter('2nd');\n }\n },\n templateUrl:'@@src/manager/shared/dir.analytics/lines_counter.html'\n }\n}\nngAnalyticsLinesCounter.$inject = ['Api'];\n\nvar ngNpsCourse = function (Api) {\n return {\n restrict: 'A',\n scope: {\n course: '@course',\n type: '@type',\n label_1st: '@label1st'\n },\n link: function (scope, elements, attr) {\n if (scope.disabled) return false;\n\n var query = `user_experience_review/net_promoter_score/course/${scope.course}`;\n scope.loadingCounter = true;\n Api.get(query, function (err, ret) {\n if (!err) {\n if (scope.type === 'platform_nps') {\n scope[`counter_1st`] = ret.response.data.platform_nps === null ? null : Math.round(ret.response.data.platform_nps.nps);\n } else {\n scope[`counter_1st`] = ret.response.data.class_nps === null ? null : Math.round(ret.response.data.class_nps.nps);\n }\n }\n scope.loadingCounter = false;\n });\n scope.icon = attr.icon || '';\n scope.size = attr.size || 's';\n },\n templateUrl:'@@src/manager/shared/dir.analytics/lines_counter.html'\n }\n}\nngNpsCourse.$inject = ['Api'];\n\nangular.module('app.full')\n .directive('ngAnalyticsLineGraph', ngAnalyticsLineGraph)\n .directive('ngAnalyticsSingleCounter', ngAnalyticsSingleCounter)\n .directive('ngAnalyticsLinesCounter', ngAnalyticsLinesCounter)\n .directive('ngAnalyticsTrafficSource', ngAnalyticsTrafficSource)\n .directive('ngAnalyticsList', ngAnalyticsList)\n .directive('ngNpsCourse', ngNpsCourse);\n","(function (angular) {\n var dynamicCtrl = function ($scope, $translate, RouteConfig, $routeParams, Api, $location, ReqAndUpload, $q, $http, NgTableParams, ROLES, formNotify) {\n if (window.location.href.indexOf('write.app') > 0) {\n $routeParams.module = 'content';\n $routeParams.page = 'articles-new';\n if ($location.search() && $location.search().user) $routeParams.user = $location.search().user;\n if ($location.search() && $location.search().group) $routeParams.group = $location.search().group;\n $routeParams.type = $location.path().indexOf('/') === -1 ? 'post' : $location.path().replace('/', '');\n }\n\n var route = `${$routeParams.module}/${$routeParams.page}`;\n if ($routeParams.id) route += '-detail';\n var config = RouteConfig.hasOwnProperty(route) ? RouteConfig[route] : false;\n\n $scope.params = $routeParams;\n\n $scope.ROLES = ROLES;\n\n if (config) {\n var prevUrl = $routeParams.id ? `/manage.app#!/${$routeParams.module}/${$routeParams.page}` : false;\n $scope.change_title($scope.header_title, prevUrl);\n\n // Create var for id route parameter\n if ($routeParams.id) $scope.id = $routeParams.id;\n\n // Register a delete fuction\n $scope.delete = function (query) {\n if (query.indexOf('/id') > 0) query = query.replace(/\\/id/, `/${$routeParams.id}`);\n Api.delete(query, function (err, ret) {\n if ($scope.hasOwnProperty(ret.response))\n App.toast(TXT[data.response], 3000);\n if (!err) $location.path(`${$routeParams.module}/${$routeParams.page}`);\n });\n }\n\n // Register a loadData function, handle retriving lists or entities data\n $scope.loadData = function (query, target) {\n var responseSchema = arguments[2] || 'response';\n var callback = arguments[3] || false;\n if (query.indexOf('/id') > 0) query = query.replace(/\\/id/, `/${$routeParams.id}`);\n Api.get(query, function (err, ret) {\n if (!err) {\n if (responseSchema.indexOf('.') === -1) {\n $scope[target] = ret[responseSchema];\n } else {\n var nodes = responseSchema.split('.');\n $scope[target] = ret[nodes[0]][nodes[1]];\n }\n if (callback) callback();\n }\n });\n }\n\n // Register save function, handle all types of data validation and calls Api\n $scope.save = function (payload, query, Form) {\n if (payload.domain) {\n payload.domain = payload.domain.toLowerCase();\n }\n var autoSave = payload.autoSave ? true : false;\n delete payload.autoSave;\n const digest = payload.digest || false;\n delete payload.digest;\n if (Form.$invalid || Form.submiting) {\n formNotify($scope, Form);\n return false;\n }\n Form.submiting = true;\n var method = (arguments[3] || 'PUT').toLowerCase();\n var callback = arguments[4] || false;\n var dataHandle = arguments[5] || false;\n var callbackError = arguments[6] || false;\n\n // Handle data before api call\n if (dataHandle) {\n var respHandle = dataHandle(payload);\n if (respHandle === 'ERROR') {\n Form.submiting = false;\n return false;\n }\n }\n\n // Bugfix, remove _id from payload\n delete payload._id;\n\n var upload = function (field) {\n var deferred = $q.defer();\n var path = query.indexOf('user/') === 0 ? 'user' : 'project';\n ReqAndUpload.upload(payload[field], path).then(function (filename) {\n payload[field] = filename;\n deferred.resolve(true);\n });\n return deferred.promise;\n }\n\n\n // Checking for field types for proper handling\n var promises = [];\n for (let field in payload) {\n if (payload[field] instanceof String) continue;\n if (payload[field] instanceof Number) continue;\n if (payload[field] instanceof Boolean) continue;\n if (payload[field] instanceof Array) continue;\n if (payload[field] instanceof Object && !payload[field] instanceof File) continue;\n if (payload[field] instanceof File || (payload[field] instanceof Object && payload[field].hasOwnProperty('$ngfBlobUrl'))) {\n var uploadRequest = upload(field);\n promises.push(uploadRequest);\n }\n ;\n }\n\n $q.all(promises).then(function () {\n if (query.indexOf('/id') > 0) query = query.replace(/\\/id/, `/${$routeParams.id}`);\n Api[method](query, payload, function (err, ret) {\n Form.submiting = false;\n var message = 'MESSAGES.OK_DEFAULT';\n if (autoSave) {\n message = 'MESSAGES.OK_AUTOSAVE';\n }\n if (ret.response === 'ARTICLE_CREATED') {\n if (!err && callback) {\n return callback(ret);\n }\n }\n if (ret.response === 'ARTICLE_SCHEDULED') {\n message = 'MESSAGES.OK_SCHEDULED';\n }\n\n if (ret.response === 'PROJECT_GENERAL_DATA_UPDATED_ALTER_LANGUAGE') {\n message = 'MESSAGES.PROJECT_GENERAL_DATA_UPDATED';\n\n location.href = location.origin + \"/purgeall\";\n\n $translate('MESSAGES.RELOAD_THIS_PAGE').then(function (result) {\n App.toast(result, 3000);\n });\n\n setTimeout(() => {\n location.reload();\n }, 3000);\n }\n\n if (err && callbackError) {\n callbackError(err, ret);\n return;\n }\n\n if (digest) {\n Api.put('project/digest', digest, function (err, ret) {\n $translate(message).then(function (result) {\n App.toast(result, 3000);\n });\n });\n } else {\n $translate(message).then(function (result) {\n App.toast(result, 3000);\n });\n }\n\n\n if (!err && callback) callback(ret);\n\n if (err) {\n throw err;\n }\n });\n })\n\n }\n\n // Use input checkbox for one array\n $scope.checkboxArray = function (checked, value, array) {\n if (!checked && array.indexOf(value) === -1) array.push(value);\n if (checked && array.indexOf(value) !== -1) array.splice(array.indexOf(value), 1);\n }\n\n // Initialize Materialize libs for new DOM elements\n $('select:not(.ng-material)').material_select();\n $('textarea[length]').characterCounter();\n if ($('ul.tabs').length > 0) {\n $('ul.tabs').tabs();\n }\n\n // side nav tools editor\n $('#editor-tools .side-tools').on('click', function () {\n $('#editor-tools').toggleClass('hide-nav show-nav');\n return false;\n });\n\n // Call a custom controller when necessary\n if (\n config.hasOwnProperty('controller') &&\n window.hasOwnProperty(`${$routeParams.module}Ctrl`) &&\n window[`${$routeParams.module}Ctrl`].hasOwnProperty(config.controller)) {\n window[`${$routeParams.module}Ctrl`][config.controller]($scope, Api, NgTableParams, ReqAndUpload, $q, $translate, $http, $routeParams, formNotify);\n }\n\n // Navigate to a view\n $scope.goTo = function (path) {\n window.location.href = `/manage.app#!/${path}`;\n // console.log(`/manage.app#!/${path}`);\n }\n }\n }\n dynamicCtrl.$inject = ['$scope', '$translate', 'RouteConfig', '$routeParams', 'Api', '$location', 'ReqAndUpload', '$q', '$http', 'NgTableParams', 'ROLES', 'formNotify'];\n\n angular.module('app.full')\n .directive('beraNumbersOnly', function () {\n return {\n require: 'ngModel',\n link: function (scope, element, attr, ngModelCtrl) {\n function fromUser(text) {\n if (text) {\n var transformedInput = text.replace(/[^0-9]/g, '');\n\n if (transformedInput !== text) {\n ngModelCtrl.$setViewValue(transformedInput);\n ngModelCtrl.$render();\n }\n return transformedInput;\n }\n return undefined;\n }\n\n ngModelCtrl.$parsers.push(fromUser);\n }\n };\n })\n .controller('DynamicCtrl', dynamicCtrl);\n\n})(angular);\n","(function (angular) {\n\n function Routes($routeProvider, RouteConfig){\n $routeProvider\n .when('/:module/:page/:id', {\n templateUrl: function($routeParams) {\n var route = `${$routeParams.module}/${$routeParams.page}-detail`;\n var hasConfig = RouteConfig.hasOwnProperty(route) ? RouteConfig[route] : false;\n var template = `/utils/src/manager/components/${$routeParams.module}/${$routeParams.page}-detail.html`;\n if(hasConfig) return template;\n },\n controller: 'DynamicCtrl'\n })\n .when('/:module/:page', {\n templateUrl: function($routeParams) {\n var route = `${$routeParams.module}/${$routeParams.page}`;\n var hasConfig = RouteConfig.hasOwnProperty(route) ? RouteConfig[route] : false;\n var template = `/utils/src/manager/components/${$routeParams.module}/${$routeParams.page}.html`;\n if(hasConfig) return template;\n },\n controller: 'DynamicCtrl'\n })\n\n }\n Routes.$inject = ['$routeProvider', 'RouteConfig'];\n\n // Export\n angular.module('app.full').config(Routes);\n\n})(angular);\n"]}