diff --git a/data/CRMEntity.php b/data/CRMEntity.php index ae1704aa72b1a5071f4376e987fdd6d57c1fc08e..735c86749852e01588f7f4258b9d44a1de5ab05f 100755 --- a/data/CRMEntity.php +++ b/data/CRMEntity.php @@ -267,9 +267,7 @@ class CRMEntity { $groupid = 0; - if(empty($ownerid) && $ownerid === 0 && $module == "Cases"){ - // Allow $ownerid = 0 for Cases module - } else if(empty($ownerid)) { + if (empty($ownerid)) { $ownerid = $current_user->id; } @@ -2950,7 +2948,7 @@ class TrackableObject implements ArrayAccess, IteratorAggregate { // decode_html only expects string $olderValue = is_string($olderValue) ? decode_html($olderValue) : $olderValue ; //same logic is used in vtEntityDelta to check for delta - if((empty($olderValue) && !empty($value)) || ($olderValue != $value)) { + if((empty($olderValue) && !empty($value)) || ($olderValue !== $value)) { $this->changed[] = $key; } } diff --git a/include/ListView/ListViewController.php b/include/ListView/ListViewController.php index 94c4e811cd046782dc9cd64407afc8402e17e642..ccc648e90cf4e447b3c132095bad43438ae5bf77 100644 --- a/include/ListView/ListViewController.php +++ b/include/ListView/ListViewController.php @@ -406,9 +406,7 @@ class ListViewController { } } } elseif ($fieldDataType == 'double') { - if ($value) { - $value = CurrencyField::convertToUserFormat($value, null, true); - } + $value = decimalFormat($value); } elseif($fieldDataType == 'url') { $matchPattern = "^[\w]+:\/\/^"; preg_match($matchPattern, $rawValue, $matches); diff --git a/include/database/PearDatabase.php b/include/database/PearDatabase.php index 6e590733dfbe2c178eb4a3eeaf7eea65ef34f67f..218429d7b75910ae870f5b4fdd235b5504b59243 100644 --- a/include/database/PearDatabase.php +++ b/include/database/PearDatabase.php @@ -810,6 +810,16 @@ class PearDatabase{ if ($this->database->clientFlags == 0 && isset($dbconfigoption['clientFlags'])) { $this->database->clientFlags = $dbconfigoption['clientFlags']; } + + if ($this->dbType == 'mysqli') { + $optionFlags = array(); + if ($this->database->optionFlags) { + $optionFlags = $this->database->optionFlags; + } + + $optionFlags = array_merge($optionFlags, array(array(MYSQLI_OPT_LOCAL_INFILE, true))); + $this->database->optionFlags = $optionFlags; + } // End $result = $this->database->PConnect($this->dbHostName, $this->userName, $this->userPassword, $this->dbName); diff --git a/languages/en_us/Vtiger.php b/languages/en_us/Vtiger.php index e0283c08e7193597f057406e1eb6013eba4f7e23..719b42c171860b9ce79270d172f423d450b67eb3 100644 --- a/languages/en_us/Vtiger.php +++ b/languages/en_us/Vtiger.php @@ -464,6 +464,18 @@ $languageStrings = array( 'LBL_IS_EMPTY'=> 'is empty', 'LBL_IS_NOT_EMPTY' => 'is not empty', 'LBL_APPROVE' => 'Approve', + 'LBL_HAS_CHANGED' => 'has changed', + 'LBL_HAS_CHANGED_TO' => 'has changed to', + 'LBL_HAS_CHANGED_FROM' => 'has changed from', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'less than or equal to', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'greater than or equal to', + 'LBL_IS_NOT' => 'is not', + 'LBL_IS_ADDED' => 'is added', + 'LBL_IS_TODAY' => 'is today', + 'LBL_IS_TOMORROW' => 'is tomorrow', + 'LBL_IS_YESTERDAY' => 'is yesterday', + 'LBL_LESS_THAN_DAYS_LATER' => 'less than days later', + 'LBL_MORE_THAN_DAYS_LATER' => 'more than days later', //Detail view summary widgets 'LBL_OWNER' => 'Owner', diff --git a/layouts/v7/lib/anchorme_js/LICENSE b/layouts/v7/lib/anchorme_js/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..6ce4915b765f4d1f550f4a95a031e889752d5457 --- /dev/null +++ b/layouts/v7/lib/anchorme_js/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Ali Saleem + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/layouts/v7/lib/anchorme_js/anchorme.js b/layouts/v7/lib/anchorme_js/anchorme.js new file mode 100644 index 0000000000000000000000000000000000000000..43e9a68e734bc1b3b5106da8938f71821655e875 --- /dev/null +++ b/layouts/v7/lib/anchorme_js/anchorme.js @@ -0,0 +1,431 @@ +/** + * + * + * Anchorme.js + * 0.6.0 + * @auth: Ali Saleem <ali.a.saleem@outlook.com> + * @repo: https://github.com/ali-saleem/anchorme.js + * + * + * + **/ + + + +(function(window) { + + 'use strict'; + + // ES6 endsWith polyfill + if (!String.prototype.endsWith) { + String.prototype.endsWith = function(searchString, position) { + var subjectString = this.toString(); + if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + } + + // ES6 startsWith polyfill + if (!String.prototype.startsWith) { + String.prototype.startsWith = function(searchString, position) { + position = position || 0; + return this.substr(position, searchString.length) === searchString; + }; + } + + var anchorme = {}; + + // helper function that counts the occurences of a specific substring in a string + anchorme.occurrences = function(string, subString, allowOverlapping) { + string += ""; + subString += ""; + if (subString.length <= 0) return string.length + 1; + var n = 0, + pos = 0; + var step = (allowOverlapping) ? (1) : (subString.length); + while (true) { + pos = string.indexOf(subString, pos); + if (pos >= 0) { + n++; + pos += step; + } + else break; + } + return (n); + }; + + // function to avoid breaking of the HTML + anchorme.dontbreakHTML = function(str) { + var atrs = ["src","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap"]; + for (var i = atrs.length; i--;) { + var needles = [atrs[i]+'=" ', atrs[i]+"=' "]; + var replacements = [atrs[i]+'="', atrs[i]+"='"]; + str = str.split(needles[0]).join(replacements[0]); + str = str.split(needles[1]).join(replacements[1]); + } + return str; + }; + + + anchorme.removeCharifItEndsWithIt = function(url,char) { + if (url.endsWith(char)) { + url = url.substring(0, url.length - 1); + return anchorme.removeCharifItEndsWithIt(url,char); + } + else return url; + }; + + + anchorme.TLDs = ['.com','.org','.edu','.gov','.uk','.net','.ca','.de','.jp','.fr','.au','.us','.ru','.ch','.it','.nl','.se','.no','.es','.io','.aero','.mil','.biz','.cat','.coop','.info','.jobs','.mobi','.museum','.name','.pro','.travel','.ac','.ad','.ae','.af','.ag','.ai','.al','.am','.an','.ao','.ap','.aq','.ar','.as','.at','.aw','.az','.ax','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm','.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.cc','.cd','.cf','.cg','.ci','.ck','.cl','.cm','.cn','.co','.cr','.cs','.cu','.cv','.cx','.cy','.cz','.dj','.dk','.dm','.do','.dz','.ec','.ee','.eg','.eh','.er','.et','.eu','.fi','.fj','.fk','.fm','.fo','.ga','.gb','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm','.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gw','.gy','.hk','.hm','.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq','.ir','.is','.je','.jm','.jo','.ke','.kg','.kh','.ki','.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li','.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg','.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt','.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng','.ni','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf','.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py','.qa','.re','.ro','.rw','.sa','.sb','.sc','.sd','.sg','.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv','.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tl','.tm','.tn','.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.um','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.wf','.ws','.ye','.yt','.yu','.za','.zm','.zw','.guru','.berlin','.photography','.tips','.today','.email','.technology','.company','.clothing','.me','.asia','.abb','.academy','.active','.actor','.ads','.adult','.afl','.agency','.aig','.airforce','.alsace','.amsterdam','.android','.apartments','.app','.aquarelle','.archi','.army','.associates','.attorney','.auction','.audio','.auto','.autos','.axa','.azure','.band','.bank','.bar','.barcelona','.barclays','.bargains','.bauhaus','.bayern','.bbc','.bbva','.bcn','.beer','.bentley','.best','.bharti','.bible','.bid','.bike','.bing','.bingo','.bio','.black','.blackfriday','.bloomberg','.blue','.bmw','.bnl','.bnpparibas','.boats','.bond','.boo','.boutique','.bradesco','.bridgestone','.broker','.brother','.brussels','.budapest','.build','.builders','.business','.buzz','.bzh','.cab','.cafe','.cal','.camera','.camp','.canon','.capetown','.capital','.caravan','.cards','.care','.career','.careers','.cars','.cartier','.casa','.cash','.casino','.catering','.cba','.cbn','.center','.ceo','.cern','.cfa','.cfd','.channel','.chat','.cheap','.chloe','.christmas','.chrome','.church','.cisco','.citic','.city','.claims','.cleaning','.click','.clinic','.cloud','.club','.coach','.codes','.coffee','.college','.cologne','.community','.computer','.condos','.construction','.consulting','.contractors','.cooking','.cool','.corsica','.country','.coupons','.courses','.credit','.creditcard','.cricket','.crown','.crs','.cruises','.cuisinella','.cw','.cymru','.cyou','.dabur','.dad','.dance','.date','.dating','.datsun','.day','.dclk','.deals','.degree','.delivery','.delta','.democrat','.dental','.dentist','.desi','.design','.dev','.diamonds','.diet','.digital','.direct','.directory','.discount','.dnp','.docs','.dog','.doha','.domains','.doosan','.download','.drive','.durban','.dvag','.earth','.eat','.education','.emerck','.energy','.engineer','.engineering','.enterprises','.epson','.equipment','.erni','.esq','.estate','.eus','.events','.everbank','.exchange','.expert','.exposed','.express','.fail','.faith','.fan','.fans','.farm','.fashion','.feedback','.film','.finance','.financial','.firmdale','.fish','.fishing','.fit','.fitness','.flights','.florist','.flowers','.flsmidth','.fly','.foo','.football','.forex','.forsale','.forum','.foundation','.frl','.frogans','.fund','.furniture','.futbol','.fyi','.gal','.gallery','.game','.garden','.gbiz','.gdn','.gent','.genting','.ggee','.gift','.gifts','.gives','.glass','.gle','.global','.globo','.gmail','.gmo','.gmx','.gold','.goldpoint','.golf','.goo','.goog','.google','.gop','.graphics','.gratis','.green','.gripe','.guge','.guide','.guitars','.hamburg','.hangout','.haus','.healthcare','.help','.here','.hermes','.hiphop','.hitachi','.hiv','.hockey','.holdings','.holiday','.homedepot','.homes','.honda','.horse','.host','.hosting','.hoteles','.hotmail','.house','.how','.hsbc','.ibm','.icbc','.icu','.ifm','.iinet','.immo','.immobilien','.industries','.infiniti','.ing','.ink','.institute','.insure','.int','.international','.investments','.irish','.ist','.istanbul','.iwc','.java','.jcb','.jetzt','.jewelry','.jlc','.jll','.joburg','.jprs','.juegos','.kaufen','.kddi','.kim','.kitchen','.kiwi','.koeln','.komatsu','.krd','.kred','.kyoto','.lacaixa','.land','.lasalle','.lat','.latrobe','.law','.lawyer','.lds','.lease','.leclerc','.legal','.lgbt','.liaison','.lidl','.life','.lighting','.limited','.limo','.link','.live','.loan','.loans','.lol','.london','.lotte','.lotto','.love','.ltda','.lupin','.luxe','.luxury','.madrid','.maif','.maison','.management','.mango','.market','.marketing','.markets','.marriott','.mba','.media','.meet','.melbourne','.meme','.memorial','.men','.menu','.miami','.microsoft','.mini','.mma','.moda','.moe','.monash','.money','.montblanc','.mormon','.mortgage','.moscow','.motorcycles','.mov','.movie','.movistar','.mtn','.mtpc','.nadex','.nagoya','.navy','.nec','.netbank','.network','.neustar','.new','.news','.nexus','.ngo','.nhk','.nico','.ninja','.nissan','.nra','.nrw','.ntt','.nyc','.office','.okinawa','.omega','.one','.ong','.onl','.online','.ooo','.oracle','.orange','.organic','.osaka','.otsuka','.ovh','.page','.panerai','.paris','.partners','.parts','.party','.pharmacy','.philips','.photo','.photos','.physio','.piaget','.pics','.pictet','.pictures','.pink','.pizza','.place','.play','.plumbing','.plus','.pohl','.poker','.porn','.post','.praxi','.press','.prod','.productions','.prof','.properties','.property','.pub','.qpon','.quebec','.racing','.realtor','.realty','.recipes','.red','.redstone','.rehab','.reise','.reisen','.reit','.ren','.rent','.rentals','.repair','.report','.republican','.rest','.restaurant','.review','.reviews','.rich','.ricoh','.rio','.rip','.rocks','.rodeo','.rs','.rsvp','.ruhr','.run','.ryukyu','.saarland','.sakura','.sale','.samsung','.sandvik','.sap','.sarl','.saxo','.sca','.scb','.school','.schule','.schwarz','.science','.seat','.sener','.services','.sew','.sex','.sexy','.shiksha','.shoes','.show','.shriram','.singles','.site','.ski','.sky','.skype','.sncf','.soccer','.social','.software','.sohu','.solar','.solutions','.sony','.soy','.space','.spiegel','.spreadbetting','.starhub','.statoil','.studio','.study','.style','.su','.sucks','.supplies','.supply','.support','.surf','.surgery','.suzuki','.swatch','.swiss','.sx','.sydney','.systems','.taipei','.tatar','.tattoo','.tax','.taxi','.team','.tech','.tel','.telefonica','.temasek','.tennis','.thd','.theater','.tickets','.tienda','.tires','.tirol','.tokyo','.tools','.top','.toray','.toshiba','.tours','.town','.toys','.trade','.trading','.training','.trust','.tui','.ubs','.university','.uno','.uol','.vacations','.vegas','.ventures','.versicherung','.vet','.viajes','.video','.villas','.vision','.vista','.vistaprint','.vlaanderen','.vodka','.vote','.voting','.voto','.voyage','.wales','.walter','.wang','.watch','.webcam','.website','.wed','.wedding','.weir','.wien','.wiki','.win','.windows','.wme','.work','.works','.world','.wtc','.wtf','.xbox','.xerox','.xin','.xxx','.xyz','.yandex','.youtube','.zip','.zone','.zuerich']; + anchorme.checks = {}; + anchorme.checks.ip = function (str) { + if (anchorme.occurrences(str, ".") > 2) { + var IPArray = str.split("."); + var oc1 = IPArray[0]; + var oc2 = IPArray[1]; + var oc3 = IPArray[2]; + if (IPArray[3].indexOf(":") > 0) { + var i_colon = IPArray[3].indexOf(":"); + var oc4 = IPArray[3].substring(0, i_colon); + var proOC = IPArray[3].substring(i_colon); + } + else if (IPArray[3].indexOf("/") > 0) { + var i_FoSlash = IPArray[3].indexOf("/"); + var oc4 = IPArray[3].substring(0, i_FoSlash); + var proOC = IPArray[3].substring(i_FoSlash); + } + else { + var oc4 = IPArray[3]; + var proOC = false; + } + if (proOC === false || proOC.charAt(0) === "/" || proOC.charAt(0) === ":") { + if ( + !isNaN(oc1) && + !isNaN(oc2) && + !isNaN(oc3) && + !isNaN(oc4) && + oc1 - 1 <= 254 && + oc2 - 1 <= 254 && + oc3 - 1 <= 254 && + oc4 - 1 <= 254 && + oc1.length > 0 && + oc2.length > 0 && + oc3.length > 0 && + oc4.length > 0 + ) {return true;} + } return false; + } return false; + }; + anchorme.checks.email = function (str,howManyTLDsToCheck) { + str = str.toLowerCase(); + if (anchorme.occurrences(str, "@") == 1) { + str = anchorme.removeCharifItEndsWithIt(str,"."); + str = anchorme.removeCharifItEndsWithIt(str,","); + str = anchorme.removeCharifItEndsWithIt(str,";"); + var i_at = str.indexOf("@"); + var Ename = str.substring(0, i_at); + var Eserver = str.substring(i_at + 1, str.length); + + var EmailAllowed = true; + for (var x = 0; x < Ename.length; x++) { + var char = Ename[x]; + if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.".indexOf(char) === -1) { + x = Ename.length; + EmailAllowed = false; + } + } + + for (var x = 0; x < Eserver.length; x++) { + var cr = Eserver[x]; + if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(cr) === -1) { + x = Eserver.length; + EmailAllowed = false; + } + } + + if (EmailAllowed) { + var validTLD = false; + for (var x = 0; x < howManyTLDsToCheck; x++) { + var d = anchorme.TLDs[x]; + if (str.endsWith(d)) { + x = anchorme.TLDs.length; + validTLD = true; + } + } + if (validTLD === true) return true; + else return false; + } else return false; + } return false; + }; + anchorme.checks.url = function (str,howManyTLDsToCheck) { + str = str.toLowerCase(); + if(str.indexOf(".") > 0 && (str.indexOf("/") > 3 || str.indexOf("/") < 0)) { + str = anchorme.removeCharifItEndsWithIt(str,"."); + str = anchorme.removeCharifItEndsWithIt(str,","); + str = anchorme.removeCharifItEndsWithIt(str,";"); + if(anchorme.occurrences(str,".") == 1 && str.indexOf(".") === str.length - 1) return false; + var domainAllowed = true; + if (str.indexOf("/") > 3) { + var i_FoSlash = str.indexOf("/"); + var pre_slash = str.substring(0, i_FoSlash); + if(pre_slash.indexOf("..") > -1) return false; + for (var x = 0; x < pre_slash.length; x++) { + var cr = pre_slash[x]; + if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(cr) === -1) { + x = pre_slash.length; + domainAllowed = false; + } + } + } else { + if(str.indexOf("..") > -1) return false; + for (var x = 0; x < str.length; x++) { + var cr = str[x]; + if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(cr) === -1) { + x = str.length; + domainAllowed = false; + } + } + } + if (domainAllowed) { + if (str.endsWith(".com")) return true; + for (var x = 0; x < howManyTLDsToCheck; x++) { + var tld = anchorme.TLDs[x]; + if (str.endsWith(tld) || str.indexOf(tld+"/") > -1 || str.indexOf(tld+":") > -1) { + x = anchorme.TLDs.length; + return true; + } + } + return false; + } else return false; + } else return false; + }; + anchorme.order = function(input, options) { + // split the input (the text we will work on) into an array + // and do checks on each item of this array + var splitedArray = input.split(" "); + for (var i = 0; i < splitedArray.length; i++) { + var fragment = splitedArray[i]; + var isurl = false; + var protocol = false; + + /** + * + * First check is to check the number of dots + * if there are more than 0 (i.e one or more) + * then this might by a URL + * else, this is surely not a URL + * + **/ + if(fragment.indexOf(".") > -1) { + /** + * second check, is to see if the fragment has any charecters + * that are not allowed neither in a URL, nor in an + * email, nor in an IP. + **/ + var allAllowed = true; + var URLallowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=%"; + + for (var x = 0; x < fragment.length; x++) { + var cr = fragment[x]; + if (URLallowed.indexOf(cr) === -1) { + x = fragment.length; + allAllowed = false; + } + } + if (allAllowed) { + + /** + * third check is to see if the fragment begins with + * a protocol, it it does, then it's a URL no other + * tests will be done. + **/ + + if( options.urls && (fragment.startsWith("http://") || fragment.startsWith("HTTP://"))) isurl = true; + else if(options.urls && (fragment.startsWith("https://") || fragment.startsWith("HTTPS://"))) isurl = true; + else if(options.urls && (fragment.startsWith("ftp://") || fragment.startsWith("FTP://"))) isurl = true; + else if(options.urls && (fragment.startsWith("file:///") || fragment.startsWith("FILE:///"))) isurl = true; + else if(options.emails && (fragment.startsWith("mailto:") || fragment.startsWith("MAILTO:"))) isurl = true; + + /** + * + * Other checks are written in seperate functions + * they are: + * * a check for IP + * * a checK for email + * * a check for URL + **/ + + else if (anchorme.checks.ip(fragment) && options.ips && fragment.indexOf(".") > 0) { + isurl = true; + protocol = options.defaultProtocol; + } + + else if (anchorme.checks.email(fragment,options.TLDs) && options.emails && fragment.indexOf(".") > -1 && fragment.indexOf("@") > -1) { + isurl = true; + protocol = "mailto:"; + } + + else if (anchorme.checks.url(fragment,options.TLDs) && options.urls) { + isurl = true; + protocol = options.defaultProtocol; + } + + /** + * + * All checks are done now + * At this point, we either have a true value or false value + * of isurl + * if it's true, we need to modify the splittedArray fragment + * if it's false, no modifications will be done + * + **/ + + if (isurl) { + + var url = protocol ? protocol + fragment : fragment; + + url = anchorme.removeCharifItEndsWithIt(url,"."); + url = anchorme.removeCharifItEndsWithIt(url,","); + url = anchorme.removeCharifItEndsWithIt(url,";"); + + if (options.attributes) { + splitedArray[i] = "<a href='" + url + "'"; + for (var name in options.attributes) { + splitedArray[i] = splitedArray[i] + " " + name + "='" + options.attributes[name] + "' "; + } + splitedArray[i] = splitedArray[i] + ">" + fragment + "</a>"; + } + else { + splitedArray[i] = "<a href='" + url + "'>" + fragment + "</a>"; + } + } + } + } + } + return splitedArray.join(" "); + }; + + // function to be called by user + anchorme.js = function(str, options) { + + // Starts by assigning the default options + // if the whole options object is ommited + if(typeof options !== "object") { + options = { + "attributes":false, + "html":true, + ips:true, + emails:true, + urls:true, + TLDs:20, + defaultProtocol:"http://" + }; + } + + // if some options were ommited and some options were given: + else { + if(typeof options.attributes != "object") options.attributes = false; + if(typeof options.html != "boolean") options.html = true; + if(typeof options.ips != "boolean") options.ips = true; + if(typeof options.emails != "boolean") options.emails = true; + if(typeof options.urls != "boolean") options.urls = true; + if(typeof options.TLDs != "number") options.TLDs = 20; + if(typeof options.defaultProtocol != "string") options.defaultProtocol = "http://"; + } + + if(options.html){ + if( + str.indexOf("</a>") > -1 || + str.indexOf("<img ") > -1 || + str.indexOf("<blockquote ") > -1 || + str.indexOf("<del ") > -1 || + str.indexOf("<iframe ") > -1 || + str.indexOf("<script ") > -1 || + str.indexOf("<audio ") > -1 || + str.indexOf("<button ") > -1 || + str.indexOf("<command ") > -1 || + str.indexOf("<embed ") > -1 || + str.indexOf("<html ") > -1 || + str.indexOf("<video ") > -1 || + str.indexOf("<applet ") > -1 || + str.indexOf("<area ") > -1 || + str.indexOf("<base ") > -1 || + str.indexOf("<body ") > -1 || + str.indexOf("<frame ") > -1 || + str.indexOf("<head ") > -1 || + str.indexOf("<usemap ") > -1 || + str.indexOf("<link ") > -1 || + str.indexOf("<input ") > -1 || + str.indexOf("<source ") > -1 || + str.indexOf("<q ") > -1 + ) str = anchorme.dontbreakHTML(str); + } + + /** + * + * Since anchorme.js runs by seperating words by spaces, + * we have to take in consideration if there were other + * charecters seperating the URL from other words, + * such as: line breaks, braces and angle brackets + * + **/ + + str = str.split("\n").join(" \n "); + str = str.split("(").join(" ( "); + str = str.split(")").join(" ) "); + str = str.split("<").join(" < "); + str = str.split(">").join(" > "); + + /** + * + * The "order" method will actually do all the heavy lifting + * and return the end result + * + **/ + + var result = anchorme.order(str, options); + + /** + * + * After getting the end result, we need to remove + * the extra spaces we added from the result + * + **/ + + result = result.split(" \n ").join("\n"); + result = result.split(" ( ").join("("); + result = result.split(" ) ").join(")"); + result = result.split(" < ").join("<"); + result = result.split(" > ").join(">"); + + // return the result + return result; + }; + + + // check js environment + if (typeof exports !== "undefined") { + // nodejs env + if (typeof module !== "undefined" && module.exports) { + exports = module.exports = anchorme; + } + exports.anchorme = anchorme; + } + else { + // requirejs env (optional) + if (typeof define === "function" && define.amd) { + define("anchorme", [], function() { + return anchorme; + }); + } + else { + // browser env + window.anchorme = anchorme; + } + } + +})(typeof window === 'object' ? window : this /* it runs in node */ ); \ No newline at end of file diff --git a/layouts/v7/lib/anchorme_js/anchorme.min.js b/layouts/v7/lib/anchorme_js/anchorme.min.js new file mode 100644 index 0000000000000000000000000000000000000000..42de76135fd94eb1ad9ae1bb2a9bb938d1d11610 --- /dev/null +++ b/layouts/v7/lib/anchorme_js/anchorme.min.js @@ -0,0 +1 @@ +!function(e){"use strict";String.prototype.endsWith||(String.prototype.endsWith=function(e,t){var i=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>i.length)&&(t=i.length),t-=e.length;var n=i.indexOf(e,t);return-1!==n&&n===t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e});var t={};t.occurrences=function(e,t,i){if(e+="",t+="",t.length<=0)return e.length+1;for(var n=0,r=0,a=i?1:t.length;;){if(r=e.indexOf(t,r),!(r>=0))break;n++,r+=a}return n},t.dontbreakHTML=function(e){for(var t=["src","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap"],i=t.length;i--;){var n=[t[i]+'=" ',t[i]+"=' "],r=[t[i]+'="',t[i]+"='"];e=e.split(n[0]).join(r[0]),e=e.split(n[1]).join(r[1])}return e},t.removeCharifItEndsWithIt=function(e,i){return e.endsWith(i)?(e=e.substring(0,e.length-1),t.removeCharifItEndsWithIt(e,i)):e},t.TLDs=[".com",".org",".edu",".gov",".uk",".net",".ca",".de",".jp",".fr",".au",".us",".ru",".ch",".it",".nl",".se",".no",".es",".io",".aero",".mil",".biz",".cat",".coop",".info",".jobs",".mobi",".museum",".name",".pro",".travel",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".ap",".aq",".ar",".as",".at",".aw",".az",".ax",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".cc",".cd",".cf",".cg",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cs",".cu",".cv",".cx",".cy",".cz",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".et",".eu",".fi",".fj",".fk",".fm",".fo",".ga",".gb",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gw",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".je",".jm",".jo",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".sa",".sb",".sc",".sd",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tl",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".um",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".wf",".ws",".ye",".yt",".yu",".za",".zm",".zw",".guru",".berlin",".photography",".tips",".today",".email",".technology",".company",".clothing",".me",".asia",".abb",".academy",".active",".actor",".ads",".adult",".afl",".agency",".aig",".airforce",".alsace",".amsterdam",".android",".apartments",".app",".aquarelle",".archi",".army",".associates",".attorney",".auction",".audio",".auto",".autos",".axa",".azure",".band",".bank",".bar",".barcelona",".barclays",".bargains",".bauhaus",".bayern",".bbc",".bbva",".bcn",".beer",".bentley",".best",".bharti",".bible",".bid",".bike",".bing",".bingo",".bio",".black",".blackfriday",".bloomberg",".blue",".bmw",".bnl",".bnpparibas",".boats",".bond",".boo",".boutique",".bradesco",".bridgestone",".broker",".brother",".brussels",".budapest",".build",".builders",".business",".buzz",".bzh",".cab",".cafe",".cal",".camera",".camp",".canon",".capetown",".capital",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".cash",".casino",".catering",".cba",".cbn",".center",".ceo",".cern",".cfa",".cfd",".channel",".chat",".cheap",".chloe",".christmas",".chrome",".church",".cisco",".citic",".city",".claims",".cleaning",".click",".clinic",".cloud",".club",".coach",".codes",".coffee",".college",".cologne",".community",".computer",".condos",".construction",".consulting",".contractors",".cooking",".cool",".corsica",".country",".coupons",".courses",".credit",".creditcard",".cricket",".crown",".crs",".cruises",".cuisinella",".cw",".cymru",".cyou",".dabur",".dad",".dance",".date",".dating",".datsun",".day",".dclk",".deals",".degree",".delivery",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".diamonds",".diet",".digital",".direct",".directory",".discount",".dnp",".docs",".dog",".doha",".domains",".doosan",".download",".drive",".durban",".dvag",".earth",".eat",".education",".emerck",".energy",".engineer",".engineering",".enterprises",".epson",".equipment",".erni",".esq",".estate",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".fail",".faith",".fan",".fans",".farm",".fashion",".feedback",".film",".finance",".financial",".firmdale",".fish",".fishing",".fit",".fitness",".flights",".florist",".flowers",".flsmidth",".fly",".foo",".football",".forex",".forsale",".forum",".foundation",".frl",".frogans",".fund",".furniture",".futbol",".fyi",".gal",".gallery",".game",".garden",".gbiz",".gdn",".gent",".genting",".ggee",".gift",".gifts",".gives",".glass",".gle",".global",".globo",".gmail",".gmo",".gmx",".gold",".goldpoint",".golf",".goo",".goog",".google",".gop",".graphics",".gratis",".green",".gripe",".guge",".guide",".guitars",".hamburg",".hangout",".haus",".healthcare",".help",".here",".hermes",".hiphop",".hitachi",".hiv",".hockey",".holdings",".holiday",".homedepot",".homes",".honda",".horse",".host",".hosting",".hoteles",".hotmail",".house",".how",".hsbc",".ibm",".icbc",".icu",".ifm",".iinet",".immo",".immobilien",".industries",".infiniti",".ing",".ink",".institute",".insure",".int",".international",".investments",".irish",".ist",".istanbul",".iwc",".java",".jcb",".jetzt",".jewelry",".jlc",".jll",".joburg",".jprs",".juegos",".kaufen",".kddi",".kim",".kitchen",".kiwi",".koeln",".komatsu",".krd",".kred",".kyoto",".lacaixa",".land",".lasalle",".lat",".latrobe",".law",".lawyer",".lds",".lease",".leclerc",".legal",".lgbt",".liaison",".lidl",".life",".lighting",".limited",".limo",".link",".live",".loan",".loans",".lol",".london",".lotte",".lotto",".love",".ltda",".lupin",".luxe",".luxury",".madrid",".maif",".maison",".management",".mango",".market",".marketing",".markets",".marriott",".mba",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".miami",".microsoft",".mini",".mma",".moda",".moe",".monash",".money",".montblanc",".mormon",".mortgage",".moscow",".motorcycles",".mov",".movie",".movistar",".mtn",".mtpc",".nadex",".nagoya",".navy",".nec",".netbank",".network",".neustar",".new",".news",".nexus",".ngo",".nhk",".nico",".ninja",".nissan",".nra",".nrw",".ntt",".nyc",".office",".okinawa",".omega",".one",".ong",".onl",".online",".ooo",".oracle",".orange",".organic",".osaka",".otsuka",".ovh",".page",".panerai",".paris",".partners",".parts",".party",".pharmacy",".philips",".photo",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pink",".pizza",".place",".play",".plumbing",".plus",".pohl",".poker",".porn",".post",".praxi",".press",".prod",".productions",".prof",".properties",".property",".pub",".qpon",".quebec",".racing",".realtor",".realty",".recipes",".red",".redstone",".rehab",".reise",".reisen",".reit",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rich",".ricoh",".rio",".rip",".rocks",".rodeo",".rs",".rsvp",".ruhr",".run",".ryukyu",".saarland",".sakura",".sale",".samsung",".sandvik",".sap",".sarl",".saxo",".sca",".scb",".school",".schule",".schwarz",".science",".seat",".sener",".services",".sew",".sex",".sexy",".shiksha",".shoes",".show",".shriram",".singles",".site",".ski",".sky",".skype",".sncf",".soccer",".social",".software",".sohu",".solar",".solutions",".sony",".soy",".space",".spiegel",".spreadbetting",".starhub",".statoil",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".swatch",".swiss",".sx",".sydney",".systems",".taipei",".tatar",".tattoo",".tax",".taxi",".team",".tech",".tel",".telefonica",".temasek",".tennis",".thd",".theater",".tickets",".tienda",".tires",".tirol",".tokyo",".tools",".top",".toray",".toshiba",".tours",".town",".toys",".trade",".trading",".training",".trust",".tui",".ubs",".university",".uno",".uol",".vacations",".vegas",".ventures",".versicherung",".vet",".viajes",".video",".villas",".vision",".vista",".vistaprint",".vlaanderen",".vodka",".vote",".voting",".voto",".voyage",".wales",".walter",".wang",".watch",".webcam",".website",".wed",".wedding",".weir",".wien",".wiki",".win",".windows",".wme",".work",".works",".world",".wtc",".wtf",".xbox",".xerox",".xin",".xxx",".xyz",".yandex",".youtube",".zip",".zone",".zuerich"],t.checks={},t.checks.ip=function(e){if(t.occurrences(e,".")>2){var i=e.split("."),n=i[0],r=i[1],a=i[2];if(i[3].indexOf(":")>0)var s=i[3].indexOf(":"),o=i[3].substring(0,s),l=i[3].substring(s);else if(i[3].indexOf("/")>0)var c=i[3].indexOf("/"),o=i[3].substring(0,c),l=i[3].substring(c);else var o=i[3],l=!1;return(l===!1||"/"===l.charAt(0)||":"===l.charAt(0))&&!isNaN(n)&&!isNaN(r)&&!isNaN(a)&&!isNaN(o)&&254>=n-1&&254>=r-1&&254>=a-1&&254>=o-1&&n.length>0&&r.length>0&&a.length>0&&o.length>0?!0:!1}return!1},t.checks.email=function(e,i){if(e=e.toLowerCase(),1==t.occurrences(e,"@")){e=t.removeCharifItEndsWithIt(e,"."),e=t.removeCharifItEndsWithIt(e,","),e=t.removeCharifItEndsWithIt(e,";");for(var n=e.indexOf("@"),r=e.substring(0,n),a=e.substring(n+1,e.length),s=!0,o=0;o<r.length;o++){var l=r[o];-1==="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.".indexOf(l)&&(o=r.length,s=!1)}for(var o=0;o<a.length;o++){var c=a[o];-1==="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(c)&&(o=a.length,s=!1)}if(s){for(var d=!1,o=0;i>o;o++){var u=t.TLDs[o];e.endsWith(u)&&(o=t.TLDs.length,d=!0)}return d===!0?!0:!1}return!1}return!1},t.checks.url=function(e,i){if(e=e.toLowerCase(),e.indexOf(".")>0&&(e.indexOf("/")>3||e.indexOf("/")<0)){if(e=t.removeCharifItEndsWithIt(e,"."),e=t.removeCharifItEndsWithIt(e,","),e=t.removeCharifItEndsWithIt(e,";"),1==t.occurrences(e,".")&&e.indexOf(".")===e.length-1)return!1;var n=!0;if(e.indexOf("/")>3){var r=e.indexOf("/"),a=e.substring(0,r);if(a.indexOf("..")>-1)return!1;for(var s=0;s<a.length;s++){var o=a[s];-1==="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(o)&&(s=a.length,n=!1)}}else{if(e.indexOf("..")>-1)return!1;for(var s=0;s<e.length;s++){var o=e[s];-1==="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:".indexOf(o)&&(s=e.length,n=!1)}}if(n){if(e.endsWith(".com"))return!0;for(var s=0;i>s;s++){var l=t.TLDs[s];if(e.endsWith(l)||e.indexOf(l+"/")>-1||e.indexOf(l+":")>-1)return s=t.TLDs.length,!0}return!1}return!1}return!1},t.order=function(e,i){for(var n=e.split(" "),r=0;r<n.length;r++){var a=n[r],s=!1,o=!1;if(a.indexOf(".")>-1){for(var l=!0,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=%",d=0;d<a.length;d++){var u=a[d];-1===c.indexOf(u)&&(d=a.length,l=!1)}if(l&&(i.urls&&(a.startsWith("http://")||a.startsWith("HTTP://"))?s=!0:i.urls&&(a.startsWith("https://")||a.startsWith("HTTPS://"))?s=!0:i.urls&&(a.startsWith("ftp://")||a.startsWith("FTP://"))?s=!0:i.urls&&(a.startsWith("file:///")||a.startsWith("FILE:///"))?s=!0:i.emails&&(a.startsWith("mailto:")||a.startsWith("MAILTO:"))?s=!0:t.checks.ip(a)&&i.ips&&a.indexOf(".")>0?(s=!0,o=i.defaultProtocol):t.checks.email(a,i.TLDs)&&i.emails&&a.indexOf(".")>-1&&a.indexOf("@")>-1?(s=!0,o="mailto:"):t.checks.url(a,i.TLDs)&&i.urls&&(s=!0,o=i.defaultProtocol),s)){var f=o?o+a:a;if(f=t.removeCharifItEndsWithIt(f,"."),f=t.removeCharifItEndsWithIt(f,","),f=t.removeCharifItEndsWithIt(f,";"),i.attributes){n[r]="<a href='"+f+"'";for(var h in i.attributes)n[r]=n[r]+" "+h+"='"+i.attributes[h]+"' ";n[r]=n[r]+">"+a+"</a>"}else n[r]="<a href='"+f+"'>"+a+"</a>"}}}return n.join(" ")},t.js=function(e,i){"object"!=typeof i?i={attributes:!1,html:!0,ips:!0,emails:!0,urls:!0,TLDs:20,defaultProtocol:"http://"}:("object"!=typeof i.attributes&&(i.attributes=!1),"boolean"!=typeof i.html&&(i.html=!0),"boolean"!=typeof i.ips&&(i.ips=!0),"boolean"!=typeof i.emails&&(i.emails=!0),"boolean"!=typeof i.urls&&(i.urls=!0),"number"!=typeof i.TLDs&&(i.TLDs=20),"string"!=typeof i.defaultProtocol&&(i.defaultProtocol="http://")),i.html&&(e.indexOf("</a>")>-1||e.indexOf("<img ")>-1||e.indexOf("<blockquote ")>-1||e.indexOf("<del ")>-1||e.indexOf("<iframe ")>-1||e.indexOf("<script ")>-1||e.indexOf("<audio ")>-1||e.indexOf("<button ")>-1||e.indexOf("<command ")>-1||e.indexOf("<embed ")>-1||e.indexOf("<html ")>-1||e.indexOf("<video ")>-1||e.indexOf("<applet ")>-1||e.indexOf("<area ")>-1||e.indexOf("<base ")>-1||e.indexOf("<body ")>-1||e.indexOf("<frame ")>-1||e.indexOf("<head ")>-1||e.indexOf("<usemap ")>-1||e.indexOf("<link ")>-1||e.indexOf("<input ")>-1||e.indexOf("<source ")>-1||e.indexOf("<q ")>-1)&&(e=t.dontbreakHTML(e)),e=e.split("\n").join(" \n "),e=e.split("(").join(" ( "),e=e.split(")").join(" ) "),e=e.split("<").join(" < "),e=e.split(">").join(" > ");var n=t.order(e,i);return n=n.split(" \n ").join("\n"),n=n.split(" ( ").join("("),n=n.split(" ) ").join(")"),n=n.split(" < ").join("<"),n=n.split(" > ").join(">")},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=t),exports.anchorme=t):"function"==typeof define&&define.amd?define("anchorme",[],function(){return t}):e.anchorme=t}("object"==typeof window?window:this); \ No newline at end of file diff --git a/layouts/v7/modules/Calendar/AddActivityType.tpl b/layouts/v7/modules/Calendar/AddActivityType.tpl index ab6d08fd19078c43ee25882f9eeef51b0fc3d822..474be3f21975c049ced88bab8bdb38bd11186964 100644 --- a/layouts/v7/modules/Calendar/AddActivityType.tpl +++ b/layouts/v7/modules/Calendar/AddActivityType.tpl @@ -8,7 +8,7 @@ ************************************************************************************} {* modules/Calendar/views/ActivityTypeViews.php *} {strip} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('LBL_ADD_CALENDAR_VIEW', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> diff --git a/layouts/v7/modules/Calendar/AddUserCalendar.tpl b/layouts/v7/modules/Calendar/AddUserCalendar.tpl index 27c18c27a2cd1f691d30b29dc0d67112daa0fb91..9c30c15e31789af4362d6f1a4b91a532c452c9ac 100644 --- a/layouts/v7/modules/Calendar/AddUserCalendar.tpl +++ b/layouts/v7/modules/Calendar/AddUserCalendar.tpl @@ -10,7 +10,7 @@ {strip} {assign var=SHARED_USER_INFO value= Zend_Json::encode($SHAREDUSERS_INFO)} {assign var=CURRENT_USER_ID value= $CURRENTUSER_MODEL->getId()} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('LBL_EDITING_CALENDAR_VIEW', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> diff --git a/layouts/v7/modules/Calendar/EditActivityType.tpl b/layouts/v7/modules/Calendar/EditActivityType.tpl index b9a1fd5da87daa12c03bb8deed8eee9b79dc3f49..c7c6443f22a5b01f98d6befd8eaaadc76f97b53b 100644 --- a/layouts/v7/modules/Calendar/EditActivityType.tpl +++ b/layouts/v7/modules/Calendar/EditActivityType.tpl @@ -8,7 +8,7 @@ ************************************************************************************} {* modules/Calendar/views/ActivityTypeViews.php *} {strip} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('LBL_EDITING_CALENDAR_VIEW', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> diff --git a/layouts/v7/modules/Calendar/EditUserCalendar.tpl b/layouts/v7/modules/Calendar/EditUserCalendar.tpl index 76a5df79d69aa0ab8fc364fa461f35d8dfd3be16..3b081e2794407ecd51c9394a16d781aa84d8fa29 100644 --- a/layouts/v7/modules/Calendar/EditUserCalendar.tpl +++ b/layouts/v7/modules/Calendar/EditUserCalendar.tpl @@ -10,7 +10,7 @@ {strip} {assign var=SHARED_USER_INFO value= Zend_Json::encode($SHAREDUSERS_INFO)} {assign var=CURRENT_USER_ID value= $CURRENTUSER_MODEL->getId()} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('LBL_EDITING_CALENDAR_VIEW', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> diff --git a/layouts/v7/modules/Calendar/QuickCreate.tpl b/layouts/v7/modules/Calendar/QuickCreate.tpl index 5d8abed257f86b36dcd5d2fcbf1141cf0720c22b..824a7b713ecb071e030ad7c33d41e88a9aa4ced0 100644 --- a/layouts/v7/modules/Calendar/QuickCreate.tpl +++ b/layouts/v7/modules/Calendar/QuickCreate.tpl @@ -144,7 +144,7 @@ {if $MODULE eq 'Events'} {assign var="EDIT_VIEW_URL" value=$CALENDAR_MODULE_MODEL->getCreateEventRecordUrl()} {/if} - <button class="btn" id="goToFullForm" data-edit-view-url="{$EDIT_VIEW_URL}" type="button"><strong>{vtranslate('LBL_GO_TO_FULL_FORM', $MODULE)}</strong></button> + <button class="btn btn-default" id="goToFullForm" data-edit-view-url="{$EDIT_VIEW_URL}" type="button"><strong>{vtranslate('LBL_GO_TO_FULL_FORM', $MODULE)}</strong></button> <button {if $BUTTON_ID neq null} id="{$BUTTON_ID}" {/if} class="btn btn-success" type="submit" name="saveButton"><strong>{$BUTTON_LABEL}</strong></button> <a href="#" class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> </center> diff --git a/layouts/v7/modules/Calendar/QuickCreateFollowup.tpl b/layouts/v7/modules/Calendar/QuickCreateFollowup.tpl index 6668be4b952707b4c844428306ba3813876408e6..721a1bb6173d1af368c83694abd195fe4752e5c1 100644 --- a/layouts/v7/modules/Calendar/QuickCreateFollowup.tpl +++ b/layouts/v7/modules/Calendar/QuickCreateFollowup.tpl @@ -8,7 +8,7 @@ ************************************************************************************} {* modules/Calendar/views/QuickCreateFollowupAjax.php *} {strip} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('LBL_CREATE_FOLLOWUP_EVENT', "Events")}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <form class="form-horizontal followupCreateView" id="followupQuickCreate" name="followupQuickCreate" method="post" action="index.php"> diff --git a/layouts/v7/modules/Calendar/RecurringDeleteView.tpl b/layouts/v7/modules/Calendar/RecurringDeleteView.tpl index af9c10d134a8b065401a5b06fd941fbe4501ad9c..d65a4fc3fbac9aefa74ac26d70fc34beb2ab7c0e 100644 --- a/layouts/v7/modules/Calendar/RecurringDeleteView.tpl +++ b/layouts/v7/modules/Calendar/RecurringDeleteView.tpl @@ -11,7 +11,7 @@ {strip} <!--Confirmation modal for updating Recurring Events--> {assign var=MODULE value="Calendar"} -<div class="modal-dialog modelContainer" style='min-width:350px;'> +<div class="modal-dialog modelContainer modal-content" style='min-width:350px;'> {assign var=HEADER_TITLE value={vtranslate('LBL_DELETE_RECURRING_EVENT', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> @@ -20,7 +20,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn onlyThisEvent" style="width : 150px"><strong>{vtranslate('LBL_ONLY_THIS_EVENT', $MODULE)}</strong></button> + <button class="btn btn-default onlyThisEvent" style="width : 150px">{vtranslate('LBL_ONLY_THIS_EVENT', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_ONLY_THIS_EVENT_DELETE_INFO', $MODULE)}</span> </span> @@ -28,7 +28,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn futureEvents" style="width : 150px"><strong>{vtranslate('LBL_FUTURE_EVENTS', $MODULE)}</strong></button> + <button class="btn btn-default futureEvents" style="width : 150px">{vtranslate('LBL_FUTURE_EVENTS', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_FUTURE_EVENTS_DELETE_INFO', $MODULE)}</span> </span> @@ -36,7 +36,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn allEvents" style="width : 150px"><strong>{vtranslate('LBL_ALL_EVENTS', $MODULE)}</strong></button> + <button class="btn btn-default allEvents" style="width : 150px">{vtranslate('LBL_ALL_EVENTS', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_ALL_EVENTS_DELETE_INFO', $MODULE)}</span> </span> diff --git a/layouts/v7/modules/Calendar/partials/Menubar.tpl b/layouts/v7/modules/Calendar/partials/Menubar.tpl index 60d85ee3db49e27986c6af798854810a5e68e55d..a6d32b25eb3268fb72ab51c0eae8bc0eb3c5e644 100644 --- a/layouts/v7/modules/Calendar/partials/Menubar.tpl +++ b/layouts/v7/modules/Calendar/partials/Menubar.tpl @@ -1,3 +1,12 @@ +{*+********************************************************************************** +* The contents of this file are subject to the vtiger CRM Public License Version 1.1 +* ("License"); You may not use this file except in compliance with the License +* The Original Code is: vtiger CRM Open Source +* The Initial Developer of the Original Code is vtiger. +* Portions created by vtiger are Copyright (C) vtiger. +* All Rights Reserved. +*************************************************************************************} + {assign var="topMenus" value=$MENU_STRUCTURE->getTop()} {assign var="moreMenus" value=$MENU_STRUCTURE->getMore()} diff --git a/layouts/v7/modules/Events/partials/EditViewContents.tpl b/layouts/v7/modules/Events/partials/EditViewContents.tpl index c514ea42fb8f49bcba069d8bb18ce1d205263dd3..5430b9643a127db2ce1114ed0559e0d07670135f 100644 --- a/layouts/v7/modules/Events/partials/EditViewContents.tpl +++ b/layouts/v7/modules/Events/partials/EditViewContents.tpl @@ -36,7 +36,7 @@ <input type="hidden" name="recurringEditMode" value="" /> <!--Confirmation modal for updating Recurring Events--> {assign var=MODULE value="Calendar"} - <div class="modal-dialog modelContainer recurringEventsUpdation hide" style='min-width:350px;'> + <div class="modal-dialog modelContainer recurringEventsUpdation modal-content hide" style='min-width:350px;'> {assign var=HEADER_TITLE value={vtranslate('LBL_EDIT_RECURRING_EVENT', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> @@ -45,7 +45,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn onlyThisEvent" style="width : 150px"><strong>{vtranslate('LBL_ONLY_THIS_EVENT', $MODULE)}</strong></button> + <button class="btn btn-default onlyThisEvent" style="width : 150px">{vtranslate('LBL_ONLY_THIS_EVENT', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_ONLY_THIS_EVENT_EDIT_INFO', $MODULE)}</span> </span> @@ -53,7 +53,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn futureEvents" style="width : 150px"><strong>{vtranslate('LBL_FUTURE_EVENTS', $MODULE)}</strong></button> + <button class="btn btn-default futureEvents" style="width : 150px">{vtranslate('LBL_FUTURE_EVENTS', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_FUTURE_EVENTS_EDIT_INFO', $MODULE)}</span> </span> @@ -61,7 +61,7 @@ <div class="row" style="padding: 1%;"> <span class="col-sm-12"> <span class="col-sm-4"> - <button class="btn allEvents" style="width : 150px"><strong>{vtranslate('LBL_ALL_EVENTS', $MODULE)}</strong></button> + <button class="btn btn-default allEvents" style="width : 150px">{vtranslate('LBL_ALL_EVENTS', $MODULE)}</button> </span> <span class="col-sm-8">{vtranslate('LBL_ALL_EVENTS_EDIT_INFO', $MODULE)}</span> </span> diff --git a/layouts/v7/modules/PriceBooks/ListPriceUpdate.tpl b/layouts/v7/modules/PriceBooks/ListPriceUpdate.tpl index e2bea6fcae44083ebdd3b55136e85821667dcf81..9801ff379cdda441e8c2654023badc0e80c51ef1 100644 --- a/layouts/v7/modules/PriceBooks/ListPriceUpdate.tpl +++ b/layouts/v7/modules/PriceBooks/ListPriceUpdate.tpl @@ -10,24 +10,25 @@ {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} {strip} - <div class="modal-dialog modelContainer modal-md" id="listPriceUpdateContainer"> + <div class="modal-dialog modelContainer modal-content modal-md" id="listPriceUpdateContainer"> {assign var=HEADER_TITLE value={vtranslate('LBL_EDIT_LIST_PRICE', $MODULE)}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <div class="modal-body"> - <form class="form-horizontal" id="listPriceUpdate" method="post" action="index.php"> + <form class="form-horizontal" id="listPriceUpdate" method="post" action="index.php"> + <div class="modal-body"> <input type="hidden" name="module" value="{$MODULE}" /> <input type="hidden" name="action" value="RelationAjax" /> <input type="hidden" name="src_record" value="{$PRICEBOOK_ID}" /> <input type="hidden" name="relid" value="{$REL_ID}" /> <div class="form-group"> - <label class="col-sm-4 control-label">{vtranslate('LBL_EDIT_LIST_PRICE',$MODULE)}   <span class="redColor">*</span> </label> + <label class="col-sm-4 control-label">{vtranslate('LBL_EDIT_LIST_PRICE',$MODULE)} <span class="redColor">*</span> </label> <div class="controls col-sm-4"> <input type="text" name="currentPrice" value="{$CURRENT_PRICE}" data-rule-required="true" class="inputElement" data-rule-currency="true" data-decimal-separator='{$USER_MODEL->get('currency_decimal_separator')}' data-group-separator='{$USER_MODEL->get('currency_grouping_separator')}' /> </div> </div> - {include file="ModalFooter.tpl"|vtemplate_path:$MODULE} - </form> + </div> + {include file="ModalFooter.tpl"|vtemplate_path:$MODULE} + </form> </div> </div> {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/PriceBooks/RelatedList.tpl b/layouts/v7/modules/PriceBooks/RelatedList.tpl index 9bc4472033031ad5e440f4cfefa896eb3055d850..ccd5375e7a4cc72a28471c4cb34994c84782d916 100644 --- a/layouts/v7/modules/PriceBooks/RelatedList.tpl +++ b/layouts/v7/modules/PriceBooks/RelatedList.tpl @@ -8,170 +8,134 @@ ************************************************************************************} {* modules/PriceBooks/views/Detail.php *} -{* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} -{*<!-- -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 -* ("License"); You may not use this file except in compliance with the License -* The Original Code is: vtiger CRM Open Source -* The Initial Developer of the Original Code is vtiger. -* Portions created by vtiger are Copyright (C) vtiger. -* All Rights Reserved. -* -********************************************************************************/ --->*} {strip} - {if $RELATED_MODULE->get('name') neq 'Products' && $RELATED_MODULE->get('name') neq 'Services'} - {include file='RelatedList.tpl'|vtemplate_path:'Vtiger'} - {else} - <div class="relatedContainer"> - <input type="hidden" name="currentPageNum" value="{$PAGING->getCurrentPage()}" /> - <input type="hidden" name="relatedModuleName" class="relatedModuleName" value="{$RELATED_MODULE->get('name')}" /> - <input type="hidden" value="{$ORDER_BY}" id="orderBy"> - <input type="hidden" value="{$SORT_ORDER}" id="sortOrder"> - <input type="hidden" value="{$RELATED_ENTIRES_COUNT}" id="noOfEntries"> - <input type='hidden' value="{$PAGING->getPageLimit()}" id='pageLimit'> - <input type='hidden' value="{$TOTAL_ENTRIES}" id='totalCount'> - <input type='hidden' value="{$TAB_LABEL}" id='tab_label' name='tab_label'> + {if $RELATED_MODULE->get('name') neq 'Products' && $RELATED_MODULE->get('name') neq 'Services'} + {include file='RelatedList.tpl'|vtemplate_path:'Vtiger'} + {else} + <div class="relatedContainer"> + <input type="hidden" name="currentPageNum" value="{$PAGING->getCurrentPage()}" /> + <input type="hidden" name="relatedModuleName" class="relatedModuleName" value="{$RELATED_MODULE->get('name')}" /> + <input type="hidden" value="{$ORDER_BY}" id="orderBy"> + <input type="hidden" value="{$SORT_ORDER}" id="sortOrder"> + <input type="hidden" value="{$RELATED_ENTIRES_COUNT}" id="noOfEntries"> + <input type='hidden' value="{$PAGING->getPageLimit()}" id='pageLimit'> + <input type='hidden' value="{$TOTAL_ENTRIES}" id='totalCount'> + <input type='hidden' value="{$TAB_LABEL}" id='tab_label' name='tab_label'> - <div class="relatedHeader"> - <div class="btn-toolbar row"> - <div class="col-lg-6 col-md-6 col-sm-6 btn-toolbar"> - {foreach item=RELATED_LINK from=$RELATED_LIST_LINKS['LISTVIEWBASIC']} - <div class="btn-group"> - {assign var=IS_SELECT_BUTTON value={$RELATED_LINK->get('_selectRelation')}} - <button type="button" class="btn - {if $IS_SELECT_BUTTON eq true} selectRelation {/if} " - {if $IS_SELECT_BUTTON eq true} data-moduleName={$RELATED_LINK->get('_module')->get('name')} {/if} - {if $RELATED_LINK->isPageLoadLink()}onclick="window.location.href='{$RELATED_LINK->getUrl()}'"{/if} - >{if $IS_SELECT_BUTTON eq false}<i class="icon-plus"></i>{/if} <strong>{$RELATED_LINK->getLabel()}</strong></button> - </div> - {/foreach} - - </div> - {assign var=CLASS_VIEW_ACTION value='relatedViewActions'} - {assign var=CLASS_VIEW_PAGING_INPUT value='relatedViewPagingInput'} - {assign var=CLASS_VIEW_PAGING_INPUT_SUBMIT value='relatedViewPagingInputSubmit'} - {assign var=CLASS_VIEW_BASIC_ACTION value='relatedViewBasicAction'} - {assign var=PAGING_MODEL value=$PAGING} - {assign var=RECORD_COUNT value=$RELATED_RECORDS|@count} - {assign var=PAGE_NUMBER value=$PAGING->get('page')} - {include file="Pagination.tpl"|vtemplate_path:$MODULE SHOWPAGEJUMP=true} - </div> - </div> - <div class="relatedContents col-lg-12 col-md-12 col-sm-12 table-container"> - <div class="bottomscroll-div"> - {assign var=WIDTHTYPE value=$USER_MODEL->get('rowheight')} - <table id="listview-table" class="table listview-table"> - <thead> - <tr class="listViewHeaders"> - <th style="min-width:100px"> - </th> - {foreach item=HEADER_FIELD from=$RELATED_HEADERS} - <th nowrap {if $HEADER_FIELD@last} {/if}> - <a href="javascript:void(0);" class="listViewContentHeaderValues" data-nextsortorderval="{if $COLUMN_NAME eq $HEADER_FIELD->get('name')}{$NEXT_SORT_ORDER}{else}ASC{/if}" data-fieldname="{$HEADER_FIELD->get('name')}">{vtranslate($HEADER_FIELD->get('label'), $RELATED_MODULE->get('name'))} - {if $COLUMN_NAME eq $HEADER_FIELD->get('column')} - <i class="fa fa-sort {$FASORT_IMAGE}"></i> - {else} - <i class="fa fa-sort customsort"></i> - {/if} - {if $COLUMN_NAME eq $HEADER_FIELD->get('name')}<img class="{$SORT_IMAGE}">{/if} - </a> - {if $COLUMN_NAME eq $HEADER_FIELD->get('column')} - <a href="#" class="removeSorting"><i class="fa fa-remove"></i></a> - {/if} - </th> - {/foreach} - </tr> - <tr class="searchRow"> - <th class="inline-search-btn"> - <button class="btn btn-success btn-sm" data-trigger="relatedListSearch">{vtranslate("LBL_SEARCH",$MODULE)}</button> - </th> - {foreach item=HEADER_FIELD from=$RELATED_HEADERS} - <th> - {if $HEADER_FIELD->get('column') eq 'time_start' or $HEADER_FIELD->get('column') eq 'time_end' or $HEADER_FIELD->getFieldDataType() eq 'reference'} - {else} - {assign var=FIELD_UI_TYPE_MODEL value=$HEADER_FIELD->getUITypeModel()} - {include file=vtemplate_path($FIELD_UI_TYPE_MODEL->getListSearchTemplateName(),$RELATED_MODULE_NAME) - FIELD_MODEL= $HEADER_FIELD SEARCH_INFO=$SEARCH_DETAILS[$HEADER_FIELD->getName()] USER_MODEL=$USER_MODEL} - <input type="hidden" class="operatorValue" value="{$SEARCH_DETAILS[$HEADER_FIELD->getName()]['comparator']}"> - {/if} - </th> - {/foreach} - </tr> - </thead> - {foreach item=RELATED_RECORD from=$RELATED_RECORDS} - {assign var=BASE_CURRENCY_DETAILS value=$RELATED_RECORD->getBaseCurrencyDetails()} - <tr class="listViewEntries" data-id='{$RELATED_RECORD->getId()}' data-recordUrl='{$RELATED_RECORD->getDetailViewUrl()}'> - <td style="width:100px"> - <span class="actionImages"> - {if (!empty($RELATED_HEADERS['listprice']) || !empty($RELATED_HEADERS['unit_price']))} - {if !empty($RELATED_HEADERS['listprice'])} - {assign var="LISTPRICE" value=$RELATED_RECORD->get('listprice')} - {/if} - {/if} - <a href="javascript:void(0);" data-url="index.php?module=PriceBooks&view=ListPriceUpdate&record={$PARENT_RECORD->getId()}&relid={$RELATED_RECORD->getId()}¤tPrice={$LISTPRICE}" - class="editListPrice cursorPointer" data-related-recordid='{$RELATED_RECORD->getId()}' data-list-price={$LISTPRICE}><i title="{vtranslate('LBL_EDIT', $MODULE)}" class="fa fa-pencil"></i></a> - <a class="relationDelete"><i title="{vtranslate('LBL_UNLINK', $MODULE)}" class="vicon-linkopen"></i></a> - </span> - </td> - {foreach item=HEADER_FIELD from=$RELATED_HEADERS} - {assign var=RELATED_HEADERNAME value=$HEADER_FIELD->get('name')} - <td nowrap class="{$WIDTHTYPE}"> - {if $HEADER_FIELD->get('name') == 'listprice'} - {assign var="LISTPRICE" value=$RELATED_RECORD->get($HEADER_FIELD->get('name'))} - {CurrencyField::appendCurrencySymbol($LISTPRICE, $PARENT_RECORD_CURRENCY_SYMBOL)} - {else if $HEADER_FIELD->isNameField() eq true or $HEADER_FIELD->get('uitype') eq '4'} - <a href="{$RELATED_RECORD->getDetailViewUrl()}">{$RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME)}</a> - {elseif $HEADER_FIELD->get('uitype') eq '71' or $HEADER_FIELD->get('uitype') eq '72'} - {assign var=CURRENCY_SYMBOL value=Vtiger_RelationListView_Model::getCurrencySymbol($RELATED_RECORD->get('id'), $HEADER_FIELD)} - {assign var=CURRENCY_VALUE value=CurrencyField::convertToUserFormat($RELATED_RECORD->get($RELATED_HEADERNAME))} - {if $HEADER_FIELD->get('uitype') eq '72'} - {assign var=CURRENCY_VALUE value=CurrencyField::convertToUserFormat($RELATED_RECORD->get($RELATED_HEADERNAME), null, true)} - {/if} - {CurrencyField::appendCurrencySymbol($CURRENCY_VALUE, $CURRENCY_SYMBOL)} - {else} - {$RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME)} - {/if} - {if $HEADER_FIELD@last} - </td> - {/if} - </td> - {/foreach} - </tr> - {/foreach} - </table> - </div> - </div> - <script type="text/javascript"> - var related_uimeta = (function() { - var fieldInfo = {$RELATED_FIELDS_INFO}; - return { - field: { - get: function(name, property) { - if(name && property === undefined) { - return fieldInfo[name]; - } - if(name && property) { - return fieldInfo[name][property] - } - }, - isMandatory : function(name){ - if(fieldInfo[name]) { - return fieldInfo[name].mandatory; - } - return false; - }, - getType : function(name){ - if(fieldInfo[name]) { - return fieldInfo[name].type - } - return false; - } - }, - }; - })(); - </script> - </div> - {/if} + {include file="partials/RelatedListHeader.tpl"|vtemplate_path:$RELATED_MODULE_NAME} + <div class="relatedContents col-lg-12 col-md-12 col-sm-12 table-container"> + <div class="bottomscroll-div"> + {assign var=WIDTHTYPE value=$USER_MODEL->get('rowheight')} + <table id="listview-table" class="table listview-table"> + <thead> + <tr class="listViewHeaders"> + <th style="min-width:100px"> + </th> + {foreach item=HEADER_FIELD from=$RELATED_HEADERS} + <th nowrap {if $HEADER_FIELD@last} {/if}> + <a href="javascript:void(0);" class="listViewContentHeaderValues" data-nextsortorderval="{if $COLUMN_NAME eq $HEADER_FIELD->get('name')}{$NEXT_SORT_ORDER}{else}ASC{/if}" data-fieldname="{$HEADER_FIELD->get('name')}">{vtranslate($HEADER_FIELD->get('label'), $RELATED_MODULE->get('name'))} + {if $COLUMN_NAME eq $HEADER_FIELD->get('column')} + <i class="fa fa-sort {$FASORT_IMAGE}"></i> + {else} + <i class="fa fa-sort customsort"></i> + {/if} + {if $COLUMN_NAME eq $HEADER_FIELD->get('name')}<img class="{$SORT_IMAGE}">{/if} + </a> + {if $COLUMN_NAME eq $HEADER_FIELD->get('column')} + <a href="#" class="removeSorting"><i class="fa fa-remove"></i></a> + {/if} + </th> + {/foreach} + </tr> + <tr class="searchRow"> + <th class="inline-search-btn"> + <button class="btn btn-success btn-sm" data-trigger="relatedListSearch">{vtranslate("LBL_SEARCH",$MODULE)}</button> + </th> + {foreach item=HEADER_FIELD from=$RELATED_HEADERS} + <th> + {if $HEADER_FIELD->get('column') eq 'time_start' or $HEADER_FIELD->get('column') eq 'time_end' or $HEADER_FIELD->getFieldDataType() eq 'reference'} + {else} + {assign var=FIELD_UI_TYPE_MODEL value=$HEADER_FIELD->getUITypeModel()} + {include file=vtemplate_path($FIELD_UI_TYPE_MODEL->getListSearchTemplateName(),$RELATED_MODULE_NAME) + FIELD_MODEL= $HEADER_FIELD SEARCH_INFO=$SEARCH_DETAILS[$HEADER_FIELD->getName()] USER_MODEL=$USER_MODEL} + <input type="hidden" class="operatorValue" value="{$SEARCH_DETAILS[$HEADER_FIELD->getName()]['comparator']}"> + {/if} + </th> + {/foreach} + </tr> + </thead> + {foreach item=RELATED_RECORD from=$RELATED_RECORDS} + {assign var=BASE_CURRENCY_DETAILS value=$RELATED_RECORD->getBaseCurrencyDetails()} + <tr class="listViewEntries" data-id='{$RELATED_RECORD->getId()}' data-recordUrl='{$RELATED_RECORD->getDetailViewUrl()}'> + <td style="width:100px"> + <span class="actionImages"> + {if (!empty($RELATED_HEADERS['listprice']) || !empty($RELATED_HEADERS['unit_price']))} + {if !empty($RELATED_HEADERS['listprice'])} + {assign var="LISTPRICE" value=$RELATED_RECORD->get('listprice')} + {/if} + {/if} + <a href="javascript:void(0);" data-url="index.php?module=PriceBooks&view=ListPriceUpdate&record={$PARENT_RECORD->getId()}&relid={$RELATED_RECORD->getId()}¤tPrice={$LISTPRICE}" + class="editListPrice cursorPointer" data-related-recordid='{$RELATED_RECORD->getId()}' data-list-price={$LISTPRICE}><i title="{vtranslate('LBL_EDIT', $MODULE)}" class="fa fa-pencil"></i></a> + <a class="relationDelete"><i title="{vtranslate('LBL_UNLINK', $MODULE)}" class="vicon-linkopen"></i></a> + </span> + </td> + {foreach item=HEADER_FIELD from=$RELATED_HEADERS} + {assign var=RELATED_HEADERNAME value=$HEADER_FIELD->get('name')} + <td nowrap class="{$WIDTHTYPE}"> + {if $HEADER_FIELD->get('name') == 'listprice'} + {assign var="LISTPRICE" value=$RELATED_RECORD->get($HEADER_FIELD->get('name'))} + {CurrencyField::appendCurrencySymbol($LISTPRICE, $PARENT_RECORD_CURRENCY_SYMBOL)} + {else if $HEADER_FIELD->isNameField() eq true or $HEADER_FIELD->get('uitype') eq '4'} + <a href="{$RELATED_RECORD->getDetailViewUrl()}">{$RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME)}</a> + {elseif $HEADER_FIELD->get('uitype') eq '71' or $HEADER_FIELD->get('uitype') eq '72'} + {assign var=CURRENCY_SYMBOL value=Vtiger_RelationListView_Model::getCurrencySymbol($RELATED_RECORD->get('id'), $HEADER_FIELD)} + {assign var=CURRENCY_VALUE value=CurrencyField::convertToUserFormat($RELATED_RECORD->get($RELATED_HEADERNAME))} + {if $HEADER_FIELD->get('uitype') eq '72'} + {assign var=CURRENCY_VALUE value=CurrencyField::convertToUserFormat($RELATED_RECORD->get($RELATED_HEADERNAME), null, true)} + {/if} + {CurrencyField::appendCurrencySymbol($CURRENCY_VALUE, $CURRENCY_SYMBOL)} + {else} + {$RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME)} + {/if} + {if $HEADER_FIELD@last} + </td> + {/if} + </td> + {/foreach} + </tr> + {/foreach} + </table> + </div> + </div> + <script type="text/javascript"> + var related_uimeta = (function() { + var fieldInfo = {$RELATED_FIELDS_INFO}; + return { + field: { + get: function(name, property) { + if(name && property === undefined) { + return fieldInfo[name]; + } + if(name && property) { + return fieldInfo[name][property] + } + }, + isMandatory : function(name){ + if(fieldInfo[name]) { + return fieldInfo[name].mandatory; + } + return false; + }, + getType : function(name){ + if(fieldInfo[name]) { + return fieldInfo[name].type + } + return false; + } + }, + }; + })(); + </script> + </div> + {/if} {/strip} diff --git a/layouts/v7/modules/Products/BundleCostView.tpl b/layouts/v7/modules/Products/BundleCostView.tpl index c298ecb990f9e100932833f0b605931dc03594e7..e8ded67c5553ed19ca58a1e027f2a3d595b6bf5b 100644 --- a/layouts/v7/modules/Products/BundleCostView.tpl +++ b/layouts/v7/modules/Products/BundleCostView.tpl @@ -15,7 +15,7 @@ </label> {assign var=PRODUCT_ACTUAL_PRICE value="{CurrencyField::convertToUserFormat((float)$PARENT_RECORD->get('unit_price'), '', true, true)}"} - <button type="button" id ="updatePrice" class="btn btn-sm btn-dark" + <button type="button" id ="updatePrice" class="btn btn-sm btn-dark btn-default" {if $SUB_PRODUCTS_TOTAL_COST eq $PRODUCT_ACTUAL_PRICE && $USER_MODEL->get('currency_id') eq $PARENT_RECORD->get('currency_id')} disabled {/if}> diff --git a/layouts/v7/modules/Settings/ExtensionStore/ExtensionModules.tpl b/layouts/v7/modules/Settings/ExtensionStore/ExtensionModules.tpl index 66709240c1e3b0ef361679dfab4aa64ab242a712..092879628db49a1a51915a6fcdc6ff1721f9917e 100644 --- a/layouts/v7/modules/Settings/ExtensionStore/ExtensionModules.tpl +++ b/layouts/v7/modules/Settings/ExtensionStore/ExtensionModules.tpl @@ -61,7 +61,7 @@ <div class="col-sm-7 col-xs-7"> <div class="pull-right"> {if $EXTENSION->isVtigerCompatible()} - <button class="btn btn-sm installExtension addButton" style="margin-right:5px;">{vtranslate('LBL_MORE_DETAILS', $QUALIFIED_MODULE)}</button> + <button class="btn btn-sm btn-default installExtension addButton" style="margin-right:5px;">{vtranslate('LBL_MORE_DETAILS', $QUALIFIED_MODULE)}</button> {if $EXTENSION->isAlreadyExists()} {if ($EXTENSION->isUpgradable())} <button class="oneclickInstallFree btn btn-success btn-sm margin0px {if $IS_AUTH}authenticated {else} loginRequired{/if}"> diff --git a/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl b/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl index 3a3af5f26685c2d70fc021a254a90fd40f4d1895..bd20b0868a182ea1411e485e39ef825bf97c3390 100644 --- a/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl +++ b/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl @@ -70,7 +70,7 @@ <span class="redColor">*</span> </label> <div class="controls col-sm-7"> - <input type="text" class='inputElement col-sm-9' maxlength="50" name="fieldLabel" value="{vtranslate($FIELD_MODEL->get('label'), $SELECTED_MODULE_NAME)}" data-rule-required='true' style='width: 75%' /> + <input type="text" class='inputElement col-sm-9' maxlength="50" {if $IS_FIELD_EDIT_MODE}disabled="disabled"{/if} name="fieldLabel" value="{vtranslate($FIELD_MODEL->get('label'), $SELECTED_MODULE_NAME)}" data-rule-required='true' style='width: 75%' /> </div> </div> {if !$IS_FIELD_EDIT_MODE} diff --git a/layouts/v7/modules/Settings/Leads/MappingDetail.tpl b/layouts/v7/modules/Settings/Leads/MappingDetail.tpl index f522667bbc6b712d3569caff2a2c6162df86b303..cd77d9de93923da4be013e9a3c247911639b1a2b 100644 --- a/layouts/v7/modules/Settings/Leads/MappingDetail.tpl +++ b/layouts/v7/modules/Settings/Leads/MappingDetail.tpl @@ -15,7 +15,7 @@ <span class="col-sm-12"> <span class="pull-right"> {foreach item=LINK_MODEL from=$MODULE_MODEL->getDetailViewLinks()} - <button type="button" class="btn btn-default" onclick={$LINK_MODEL->getUrl()}><strong>{vtranslate($LINK_MODEL->getLabel(), $QUALIFIED_MODULE)}</strong></button> + <button type="button" class="btn btn-default" onclick={$LINK_MODEL->getUrl()}>{vtranslate($LINK_MODEL->getLabel(), $QUALIFIED_MODULE)}</button> {/foreach} </span> </span> diff --git a/layouts/v7/modules/Settings/ModuleManager/ListContents.tpl b/layouts/v7/modules/Settings/ModuleManager/ListContents.tpl index 6a8d45986f2ffb080f65714382bb3a8de162de03..c5716cdf3f3bbe87caa62ae40ca6acb48c715f3c 100644 --- a/layouts/v7/modules/Settings/ModuleManager/ListContents.tpl +++ b/layouts/v7/modules/Settings/ModuleManager/ListContents.tpl @@ -62,9 +62,27 @@ </button> <ul class="dropdown-menu pull-right dropdownfields"> {foreach item=SETTINGS_LINK from=$SETTINGS_LINKS} - <li> - <a {if stripos($SETTINGS_LINK['linkurl'], 'javascript:')===0} onclick='{$SETTINGS_LINK['linkurl']|substr:strlen("javascript:")};'{else} onclick='window.location.href = "{$SETTINGS_LINK['linkurl']}"'{/if}>{vtranslate($SETTINGS_LINK['linklabel'], $MODULE_NAME, vtranslate("SINGLE_$MODULE_NAME", $MODULE_NAME))}</a> - </li> + {if $MODULE_NAME eq 'Calendar'} + {if $SETTINGS_LINK['linklabel'] eq 'LBL_EDIT_FIELDS'} + <li><a href="{$SETTINGS_LINK['linkurl']}&sourceModule=Events">{vtranslate($SETTINGS_LINK['linklabel'], $MODULE_NAME, vtranslate('LBL_EVENTS',$MODULE_NAME))}</a></li> + <li><a href="{$SETTINGS_LINK['linkurl']}&sourceModule=Calendar">{vtranslate($SETTINGS_LINK['linklabel'], $MODULE_NAME, vtranslate('LBL_TASKS','Calendar'))}</a></li> + {else if $SETTINGS_LINK['linklabel'] eq 'LBL_EDIT_WORKFLOWS'} + <li><a href="{$SETTINGS_LINK['linkurl']}&sourceModule=Events">{vtranslate('LBL_EVENTS', $MODULE_NAME)} {vtranslate('LBL_WORKFLOWS',$MODULE_NAME)}</a></li> + <li><a href="{$SETTINGS_LINK['linkurl']}&sourceModule=Calendar">{vtranslate('LBL_TASKS', 'Calendar')} {vtranslate('LBL_WORKFLOWS',$MODULE_NAME)}</a></li> + {else} + <li><a href={$SETTINGS_LINK['linkurl']}>{vtranslate($SETTINGS_LINK['linklabel'], $MODULE_NAME, vtranslate($MODULE_NAME, $MODULE_NAME))}</a></li> + {/if} + {else} + <li> + <a {if stripos($SETTINGS_LINK['linkurl'], 'javascript:')===0} + onclick='{$SETTINGS_LINK['linkurl']|substr:strlen("javascript:")};' + {else} + onclick='window.location.href = "{$SETTINGS_LINK['linkurl']}"' + {/if}> + {vtranslate($SETTINGS_LINK['linklabel'], $MODULE_NAME, vtranslate("SINGLE_$MODULE_NAME", $MODULE_NAME))} + </a> + </li> + {/if} {/foreach} </ul> </span> diff --git a/layouts/v7/modules/Settings/Workflows/resources/AdvanceFilter.js b/layouts/v7/modules/Settings/Workflows/resources/AdvanceFilter.js index 2e6c71b18350a016baf6f54dd347bdf6ab66221d..4e1c752730c3255fbc6fa9c968b99e898b83c953 100644 --- a/layouts/v7/modules/Settings/Workflows/resources/AdvanceFilter.js +++ b/layouts/v7/modules/Settings/Workflows/resources/AdvanceFilter.js @@ -317,7 +317,7 @@ Vtiger_Field_Js('Workflows_Field_Js',{},{ Workflows_Field_Js('Workflows_Text_Field_Js', {}, { getUi : function() { - var html = '<textarea class="getPopupUi" name="'+this.getName()+'" value="">'+this.getValue()+'</textarea>'+ + var html = '<textarea class="getPopupUi textarea inputElement" name="'+this.getName()+'" value="">'+this.getValue()+'</textarea>'+ '<input type="hidden" name="valuetype" value="'+this.get('workflow_valuetype')+'" />'; html = jQuery(html); return this.addValidationToElement(html); @@ -398,7 +398,7 @@ Vtiger_Date_Field_Js('Workflows_Datetime_Field_Js',{},{ } else if(comparatorSelectedOptionVal == 'is today' || comparatorSelectedOptionVal == 'is tomorrow' || comparatorSelectedOptionVal == 'is yesterday') { // show nothing } else { - var html = '<input type="text" class="getPopupUi date" name="'+ this.getName() +'" data-date-format="'+ this.getDateFormat() +'" value="'+ this.getValue() + '" />'+ + var html = '<input type="text" class="getPopupUi datetime inputElement" name="'+ this.getName() +'" data-date-format="'+ this.getDateFormat() +'" value="'+ this.getValue() + '" />'+ '<input type="hidden" name="valuetype" value="'+this.get('workflow_valuetype')+'" />' var element = jQuery(html); } @@ -420,7 +420,7 @@ Vtiger_Date_Field_Js('Workflows_Datetime_Field_Js',{},{ Vtiger_Currency_Field_Js('Workflows_Currency_Field_Js',{},{ getUi : function() { - var html = '<input type="text" class="getPopupUi marginLeftZero inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ + var html = '<input type="text" class="getPopupUi marginLeftZero currency inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ '<input type="hidden" name="valuetype" value="'+this.get('workflow_valuetype')+'" />'; var element = jQuery(html); return this.addValidationToElement(element); @@ -449,7 +449,7 @@ Vtiger_Field_Js('Vtiger_Percentage_Field_Js',{},{ * @return - input percentage field */ getUi : function() { - var html = '<input type="text" class="getPopupUi" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ + var html = '<input type="text" class="getPopupUi percent inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ '<input type="hidden" name="valuetype" value="'+this.get('workflow_valuetype')+'" />'; var element = jQuery(html); return this.addValidationToElement(element); @@ -463,7 +463,7 @@ Vtiger_Field_Js('Vtiger_Text_Field_Js',{},{ * @return - input text field */ getUi : function() { - var html = '<input type="text" class="getPopupUi inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ + var html = '<input type="text" class="getPopupUi text inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ '<input type="hidden" name="valuetype" value="'+this.get('workflow_valuetype')+'" />'; var element = jQuery(html); return this.addValidationToElement(element); diff --git a/layouts/v7/modules/Users/ChangeUsername.tpl b/layouts/v7/modules/Users/ChangeUsername.tpl index 6d939ebbbe8c2e1bf12689db6a573fc6fdcbc288..361072b0ff25e1dda29a18e085f845f41d1d0cd2 100644 --- a/layouts/v7/modules/Users/ChangeUsername.tpl +++ b/layouts/v7/modules/Users/ChangeUsername.tpl @@ -24,7 +24,7 @@ <span class="redColor">*</span> </label> <div class="controls col-sm-6"> - <input type="text" name="new_username" data-rule-required="true" data-rule-email="true" data-rule-illegal="true"/> + <input type="text" name="new_username" data-rule-required="true" data-rule-illegal="true"/> </div> </div> diff --git a/layouts/v7/modules/Vtiger/AddCommentForm.tpl b/layouts/v7/modules/Vtiger/AddCommentForm.tpl index 6c4117f168df6febd453880142cb5ae5dc7f1be3..e436d980a250800e1a7a2dd5d9588d6db78a7936 100644 --- a/layouts/v7/modules/Vtiger/AddCommentForm.tpl +++ b/layouts/v7/modules/Vtiger/AddCommentForm.tpl @@ -29,7 +29,7 @@ <div class="modal-body"> <div class="container-fluid"> <div class="row commentTextArea" id="mass_action_add_comment"> - <textarea class="col-lg-12 mention_listener" name="commentcontent" id="commentcontent" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}" placeholder="{vtranslate('LBL_WRITE_YOUR_COMMENT_HERE', $MODULE)}..." data-rule-required="true"></textarea> + <textarea class="col-lg-12" name="commentcontent" id="commentcontent" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}" placeholder="{vtranslate('LBL_WRITE_YOUR_COMMENT_HERE', $MODULE)}..." data-rule-required="true"></textarea> </div> </div> </div> diff --git a/layouts/v7/modules/Vtiger/AddDashBoardTabForm.tpl b/layouts/v7/modules/Vtiger/AddDashBoardTabForm.tpl index 46920355f8547b23a196c3f9d1cf4ad23388e723..fff5cf4f78066413c60b36a512f5177e3af4a861 100644 --- a/layouts/v7/modules/Vtiger/AddDashBoardTabForm.tpl +++ b/layouts/v7/modules/Vtiger/AddDashBoardTabForm.tpl @@ -14,8 +14,8 @@ <input type="hidden" name="module" value="{$MODULE}"/> <input type="hidden" name="action" value="DashBoardTab"/> <input type="hidden" name="mode" value="addTab"/> - <div class="modal-body clearfix"> - <div class="col-lg-3"> + <div class="modal-body clearfix"> + <div class="col-lg-5"> <label class="control-label pull-right marginTop5px"> {vtranslate('LBL_TAB_NAME',$MODULE)} <span class="redColor">*</span> </label> diff --git a/layouts/v7/modules/Vtiger/Comment.tpl b/layouts/v7/modules/Vtiger/Comment.tpl index 36b2595bceadc7ad51f3df25f5fcacf606fd36b3..5980b51dab69187181379bbd213795532c49085b 100644 --- a/layouts/v7/modules/Vtiger/Comment.tpl +++ b/layouts/v7/modules/Vtiger/Comment.tpl @@ -45,7 +45,10 @@ </a> </span> {/if} - <div class=""> + <span class="commentTime text-muted cursorDefault"> + <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getCommentedTime())}">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getCommentedTime())}</small> + </span> + <div class="commentInfoContentBlock"> <span class="commentInfoContent"> {nl2br($COMMENT->get('commentcontent'))} </span> @@ -76,44 +79,46 @@ {if $CHILD_COMMENTS_MODEL neq null and ($CHILDS_ROOT_PARENT_ID neq $PARENT_COMMENT_ID)} {if $COMMENTS_MODULE_MODEL->isPermitted('EditView')} {/if} <span class="viewThreadBlock" data-child-comments-count="{$CHILD_COMMENTS_COUNT}"> - <a href="javascript:void(0)" class="cursorPointer viewThread"> + <a href="javascript:void(0)" class="cursorPointer viewThread" style="color: blue;"> <span class="childCommentsCount">{$CHILD_COMMENTS_COUNT}</span> {if $CHILD_COMMENTS_COUNT eq 1}{vtranslate('LBL_REPLY',$MODULE_NAME)}{else}{vtranslate('LBL_REPLIES',$MODULE_NAME)}{/if} </a> </span> <span class="hideThreadBlock" data-child-comments-count="{$CHILD_COMMENTS_COUNT}" style="display:none;"> - <a href="javascript:void(0)" class="cursorPointer hideThread"> + <a href="javascript:void(0)" class="cursorPointer hideThread" style="color: blue;"> <span class="childCommentsCount">{$CHILD_COMMENTS_COUNT}</span> {if $CHILD_COMMENTS_COUNT eq 1}{vtranslate('LBL_REPLY',$MODULE_NAME)}{else}{vtranslate('LBL_REPLIES',$MODULE_NAME)}{/if} </a> </span> {elseif $CHILD_COMMENTS_MODEL neq null and ($CHILDS_ROOT_PARENT_ID eq $PARENT_COMMENT_ID)} {if $COMMENTS_MODULE_MODEL->isPermitted('EditView')} {/if} <span class="viewThreadBlock" data-child-comments-count="{$CHILD_COMMENTS_COUNT}" style="display:none;"> - <a href="javascript:void(0)" class="cursorPointer viewThread"> + <a href="javascript:void(0)" class="cursorPointer viewThread" style="color: blue;"> <span class="childCommentsCount">{$CHILD_COMMENTS_COUNT}</span> {if $CHILD_COMMENTS_COUNT eq 1}{vtranslate('LBL_REPLY',$MODULE_NAME)}{else}{vtranslate('LBL_REPLIES',$MODULE_NAME)}{/if} </a> </span> <span class="hideThreadBlock" data-child-comments-count="{$CHILD_COMMENTS_COUNT}"> - <a href="javascript:void(0)" class="cursorPointer hideThread"> + <a href="javascript:void(0)" class="cursorPointer hideThread" style="color: blue;"> <span class="childCommentsCount">{$CHILD_COMMENTS_COUNT}</span> {if $CHILD_COMMENTS_COUNT eq 1}{vtranslate('LBL_REPLY',$MODULE_NAME)}{else}{vtranslate('LBL_REPLIES',$MODULE_NAME)}{/if} </a> </span> {/if} </span> - - <span class="commentTime text-muted cursorDefault" style="padding:20px;"> - <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getCommentedTime())}">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getCommentedTime())}</small> - </span> </div> - <br> {assign var="REASON_TO_EDIT" value=$COMMENT->get('reasontoedit')} - <div class="editedStatus" name="editStatus"> - <div class="{if empty($REASON_TO_EDIT)}hide{/if} editReason"> - <p class="text-muted"><small>[ {vtranslate('LBL_EDIT_REASON',$MODULE_NAME)} ] : <span name="editReason" class="textOverflowEllipsis">{nl2br($REASON_TO_EDIT)}</span></small></p> + {if $COMMENT->getCommentedTime() neq $COMMENT->getModifiedTime()} + <br> + <div class="commentEditStatus" name="editStatus"> + {assign var="REASON_TO_EDIT" value=$COMMENT->get('reasontoedit')} + {if $REASON_TO_EDIT} + <div class="text-muted"> + <small>{vtranslate('LBL_EDIT_REASON',$MODULE_NAME)} : <span name="editReason" class="textOverflowEllipsis">{nl2br($REASON_TO_EDIT)}</span></small> + </div> + {/if} + <div style="margin-top:5px;" class="text-muted"> + <small>{vtranslate('LBL_COMMENT',$MODULE_NAME)} {strtolower(vtranslate('LBL_MODIFIED',$MODULE_NAME))}</small> + <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getModifiedTime())}" class="commentModifiedTime">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getModifiedTime())}</small> + </div> </div> - {if $COMMENT->getCommentedTime() neq $COMMENT->getModifiedTime()} - <p class="text-muted cursorDefault"><small><em>{vtranslate('LBL_MODIFIED',$MODULE_NAME)}</em></small> <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getModifiedTime())}" class="commentModifiedTime">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getModifiedTime())}</small></p> - {/if} - </div> + {/if} <div style="margin-top:5px;"> {assign var="FILE_DETAILS" value=$COMMENT->getFileNameAndDownloadURL()} {foreach key=index item=FILE_DETAIL from=$FILE_DETAILS} @@ -136,12 +141,11 @@ </div> </div> </div> - <hr> </div> </div> </div> - </div> </div> + <hr> </div> {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/EmailPreview.tpl b/layouts/v7/modules/Vtiger/EmailPreview.tpl index 894b0040e5414e3d88a374f092324c2b5e9f897b..b4a132c4b5194ab1b197ddccaa80bb6a19f03d2f 100644 --- a/layouts/v7/modules/Vtiger/EmailPreview.tpl +++ b/layouts/v7/modules/Vtiger/EmailPreview.tpl @@ -56,7 +56,7 @@ </div> <div class="col-lg-6"> <div class="email-preview-toolbar pull-right"> - {if $RECORD->getEmailFlag() neq 'SAVED' AND $PARENT_MODULE neq 'Cases'} + {if $RECORD->getEmailFlag() neq 'SAVED'} <button type="button" name="previewReply" class="btn btn-sm" data-mode="emailReply"> <strong>{vtranslate('LBL_REPLY',$MODULE)}</strong> </button> diff --git a/layouts/v7/modules/Vtiger/JSResources.tpl b/layouts/v7/modules/Vtiger/JSResources.tpl index 792197c07d45ce6edbd62fa629fc799ab06e4bbe..0f2ad260a753620b7fd5004fbf5d01a0aa916e3a 100644 --- a/layouts/v7/modules/Vtiger/JSResources.tpl +++ b/layouts/v7/modules/Vtiger/JSResources.tpl @@ -36,6 +36,7 @@ <script type="text/javascript" src="layouts/v7/lib/jquery/jquery.timeago.js"></script> <script type="text/javascript" src="libraries/jquery/ckeditor/ckeditor.js"></script> <script type="text/javascript" src="libraries/jquery/ckeditor/adapters/jquery.js"></script> + <script type='text/javascript' src='layouts/v7/lib/anchorme_js/anchorme.min.js'></script> <script type="text/javascript" src="{vresource_url('layouts/v7/modules/Vtiger/resources/Class.js')}"></script> <script type='text/javascript' src="{vresource_url('layouts/v7/resources/helper.js')}"></script> <script type="text/javascript" src="{vresource_url('layouts/v7/resources/application.js')}"></script> diff --git a/layouts/v7/modules/Vtiger/ListViewQuickPreview.tpl b/layouts/v7/modules/Vtiger/ListViewQuickPreview.tpl index 22744f95297f6b12cfc56f957d28d38efd3d2eed..f03215f9325342f60390a9350683430056d4eb7e 100644 --- a/layouts/v7/modules/Vtiger/ListViewQuickPreview.tpl +++ b/layouts/v7/modules/Vtiger/ListViewQuickPreview.tpl @@ -72,7 +72,7 @@ </div> <br> - {if $MODULE_MODEL->isCommentEnabled() && $MODULE_NAME neq 'Cases'} + {if $MODULE_MODEL->isCommentEnabled()} <div class="quickPreviewComments"> {include file="ListViewQuickPreviewSectionHeader.tpl"|vtemplate_path:$MODULE_NAME TITLE="{vtranslate('LBL_RECENT_COMMENTS',$MODULE_NAME)}"} {include file="QuickViewCommentsList.tpl"|vtemplate_path:$MODULE_NAME} diff --git a/layouts/v7/modules/Vtiger/QuickCreate.tpl b/layouts/v7/modules/Vtiger/QuickCreate.tpl index cbff7264b3c24057177b7b20c1fb55d7e4fbf368..cae856119138bd8d0ea6b73455631dfe36be0ab8 100644 --- a/layouts/v7/modules/Vtiger/QuickCreate.tpl +++ b/layouts/v7/modules/Vtiger/QuickCreate.tpl @@ -109,7 +109,7 @@ {assign var=BUTTON_LABEL value={vtranslate('LBL_SAVE', $MODULE)}} {/if} {assign var="EDIT_VIEW_URL" value=$MODULE_MODEL->getCreateRecordUrl()} - <button class="btn" id="goToFullForm" data-edit-view-url="{$EDIT_VIEW_URL}" type="button"><strong>{vtranslate('LBL_GO_TO_FULL_FORM', $MODULE)}</strong></button> + <button class="btn btn-default" id="goToFullForm" data-edit-view-url="{$EDIT_VIEW_URL}" type="button"><strong>{vtranslate('LBL_GO_TO_FULL_FORM', $MODULE)}</strong></button> <button {if $BUTTON_ID neq null} id="{$BUTTON_ID}" {/if} class="btn btn-success" type="submit" name="saveButton"><strong>{$BUTTON_LABEL}</strong></button> <a href="#" class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> </center> diff --git a/layouts/v7/modules/Vtiger/RecentComments.tpl b/layouts/v7/modules/Vtiger/RecentComments.tpl index 18b574ac227dbc399d5e44bcde84720ffb3e098e..a12f69e17f7c8aafba90529c2e9fea5d1e58f895 100644 --- a/layouts/v7/modules/Vtiger/RecentComments.tpl +++ b/layouts/v7/modules/Vtiger/RecentComments.tpl @@ -20,7 +20,7 @@ <div class="row"> <div class=" col-lg-12"> <div class="commentTextArea "> - <textarea name="commentcontent" class="commentcontent form-control mention_listener" placeholder="{vtranslate('LBL_POST_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> + <textarea name="commentcontent" class="commentcontent form-control col-lg-12" placeholder="{vtranslate('LBL_POST_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> </div> </div> </div> @@ -98,7 +98,7 @@ <span class="text-muted wordbreak display-inline-block"> {vtranslate('LBL_ON','Vtiger')} {vtranslate($SINGULR_MODULE,$COMMENT->get('module'))} - <a href="index.php?module={$COMMENT->get('module')}&view=Detail&record={$COMMENT->get('related_to')}"> + <a href="index.php?module={$COMMENT->get('module')}&view=Detail&record={$COMMENT->get('related_to')}" style="color: blue;"> {$ENTITY_NAME[$COMMENT->get('related_to')]} </a> </span> @@ -107,19 +107,16 @@ <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getCommentedTime())}">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getCommentedTime())}</small> </span> - <div class=""> - {if $COMMENT->get('module') eq 'Cases' and !$COMMENT->get('is_private')} - {assign var=COMMENT_CONTENT value={decode_html($COMMENT->get('commentcontent'))}} - {else} - {assign var=COMMENT_CONTENT value={nl2br($COMMENT->get('commentcontent'))}} - {/if} + <div class="commentInfoContentBlock"> + {assign var=COMMENT_CONTENT value={nl2br($COMMENT->get('commentcontent'))}} {if $COMMENT_CONTENT} {assign var=DISPLAYNAME value={decode_html($COMMENT_CONTENT)}} - <span class="commentInfoContent" style="display: block" data-fullComment="{$COMMENT_CONTENT|escape:"html"}" data-shortComment="{$DISPLAYNAME|mb_substr:0:200|escape:"html"}..." data-more='{vtranslate('LBL_SHOW_MORE',$MODULE)}' data-less='{vtranslate('LBL_SHOW',$MODULE)} {vtranslate('LBL_LESS',$MODULE)}'> - {if $DISPLAYNAME|count_characters:true gt 200} - {mb_substr(trim($DISPLAYNAME),0,200)}... - <br><a class="pull-right toggleComment showMore"><small>{vtranslate('LBL_SHOW_MORE',$MODULE)}</small></a> - {else} + {assign var=MAX_LENGTH value=200} + <span class="commentInfoContent" data-maxlength="{$MAX_LENGTH}" style="display: block" data-fullComment="{$COMMENT_CONTENT|escape:"html"}" data-shortComment="{$DISPLAYNAME|mb_substr:0:200|escape:"html"}..." data-more='{vtranslate('LBL_SHOW_MORE',$MODULE)}' data-less='{vtranslate('LBL_SHOW',$MODULE)} {vtranslate('LBL_LESS',$MODULE)}'> + {if $DISPLAYNAME|count_characters:true gt $MAX_LENGTH} + {mb_substr(trim($DISPLAYNAME),0,$MAX_LENGTH)}... + <a class="pull-right toggleComment showMore" style="color: blue;"><small>{vtranslate('LBL_SHOW_MORE',$MODULE)}</small></a> + {else} {$COMMENT_CONTENT} {/if} </span> @@ -132,10 +129,10 @@ <div class="commentAttachmentName"> <div class="filePreview clearfix"> <span class="fa fa-paperclip cursorPointer" ></span> - <a class="previewfile" onclick="Vtiger_Detail_Js.previewFile(event,{$COMMENT->get('id')},{$FILE_DETAIL['attachmentId']});" data-filename="{$FILE_NAME}" href="javascript:void(0)" name="viewfile"> + <a class="previewfile" onclick="Vtiger_Detail_Js.previewFile(event,{$COMMENT->get('id')},{$FILE_DETAIL['attachmentId']});" data-filename="{$FILE_NAME}" href="javascript:void(0)" name="viewfile" style="color: blue;"> <span title="{$FILE_DETAIL['rawFileName']}" style="line-height:1.5em;">{$FILE_NAME}</span>  </a> - <a name="downloadfile" href="{$FILE_DETAIL['url']}"> + <a name="downloadfile" href="{$FILE_DETAIL['url']}" style="color: blue;"> <i title="{vtranslate('LBL_DOWNLOAD_FILE',$MODULE_NAME)}" class="hide fa fa-download alignMiddle" ></i> </a> </div> @@ -146,7 +143,7 @@ <div class="commentActionsContainer" style="margin-top: 2px;"> <span> {if $PARENT_COMMENT_MODEL neq false or $CHILD_COMMENTS_MODEL neq null} - <a href="javascript:void(0);" class="cursorPointer detailViewThread">{vtranslate('LBL_VIEW_THREAD',$MODULE_NAME)}</a> + <a href="javascript:void(0);" class="cursorPointer detailViewThread" style="color: blue;">{vtranslate('LBL_VIEW_THREAD',$MODULE_NAME)}</a> {/if} </span> <span class="summarycommemntActionblock" > @@ -164,30 +161,24 @@ {/if} </span> </div> - <br> - <div class="row commentEditStatus marginBottom10px" name="editStatus"> - {assign var="REASON_TO_EDIT" value=$COMMENT->get('reasontoedit')} - <span class="col-lg-5 col-md-5 col-sm-5{if empty($REASON_TO_EDIT)} hide{/if}"> - <small> [{vtranslate('LBL_EDIT_REASON',$MODULE_NAME)}]</small> - </span> - {if $COMMENT->getCommentedTime() neq $COMMENT->getModifiedTime()} - <span class="{if empty($REASON_TO_EDIT)}row{else} col-lg-7 col-md-7 col-sm-7{/if}"> - <p class="text-muted pull-right"> - <small><em>{vtranslate('LBL_MODIFIED',$MODULE_NAME)}</em></small> + {if $COMMENT->getCommentedTime() neq $COMMENT->getModifiedTime()} + <br> + <div class="row commentEditStatus" name="editStatus"> + {assign var="REASON_TO_EDIT" value=$COMMENT->get('reasontoedit')} + {if $REASON_TO_EDIT} + <span class="text-muted col-lg-5 col-md-5 col-sm-5"> + <small>{vtranslate('LBL_EDIT_REASON',$MODULE_NAME)} : <span name="editReason" class="textOverflowEllipsis">{nl2br($REASON_TO_EDIT)}</span></small> + </span> + {/if} + <span {if $REASON_TO_EDIT}class="col-lg-7 col-md-7 col-sm-7"{/if}> + <p class="text-muted pull-right" {if !$REASON_TO_EDIT}style="margin-right: 15px;"{/if}> + <small>{vtranslate('LBL_COMMENT',$MODULE_NAME)} {strtolower(vtranslate('LBL_MODIFIED',$MODULE_NAME))}</small> <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($COMMENT->getModifiedTime())}" class="commentModifiedTime">{Vtiger_Util_Helper::formatDateDiffInStrings($COMMENT->getModifiedTime())}</small> </p> </span> - {/if} - </div> - <div class="row marginBottom10px"> - <div class="col-lg-12 col-md-12 col-sm-12"> - <p class="text-muted"> - <small> - <span name="editReason" class="wordbreak">{nl2br($REASON_TO_EDIT)}</span> - </small> - </p> </div> - </div> + {/if} + <br> </div> </div> </div> @@ -206,15 +197,15 @@ {if $PAGING_MODEL->isNextPageExists()} <div class="row"> <div class="textAlignCenter"> - <a href="javascript:void(0)" class="moreRecentComments">{vtranslate('LBL_SHOW_MORE',$MODULE_NAME)}</a> + <a href="javascript:void(0)" class="moreRecentComments" style="color: blue;">{vtranslate('LBL_SHOW_MORE',$MODULE_NAME)}</a> </div> </div> {/if} </div> - <div class="hide basicAddCommentBlock container-fluid"> + <div class="hide basicAddCommentBlock container-fluid" style="min-height: 110px;"> <div class="commentTextArea row"> - <textarea name="commentcontent" class="commentcontent" placeholder="{vtranslate('LBL_ADD_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> + <textarea name="commentcontent" class="commentcontent col-lg-12" placeholder="{vtranslate('LBL_ADD_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> </div> <div class="pull-right row"> {if in_array($MODULE_NAME, $PRIVATE_COMMENT_MODULES)} @@ -235,7 +226,7 @@ </div> <div class="row" style="padding-bottom: 10px;"> <div class="commentTextArea"> - <textarea name="commentcontent" class="commentcontenthidden" placeholder="{vtranslate('LBL_ADD_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> + <textarea name="commentcontent" class="commentcontenthidden col-lg-12" placeholder="{vtranslate('LBL_ADD_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> </div> </div> <input type="hidden" name="is_private"> diff --git a/layouts/v7/modules/Vtiger/ShowAllComments.tpl b/layouts/v7/modules/Vtiger/ShowAllComments.tpl index 48e85cf0b03b9fa58e041577d4d87cf86a06a4da..ec07af50a88fa12b4b4f7a303fddf8712559c2b7 100644 --- a/layouts/v7/modules/Vtiger/ShowAllComments.tpl +++ b/layouts/v7/modules/Vtiger/ShowAllComments.tpl @@ -18,7 +18,7 @@ <div class="commentTitle row"> <div class="addCommentBlock"> <div class="commentTextArea"> - <textarea name="commentcontent" class="commentcontent form-control mention_listener" placeholder="{vtranslate('LBL_POST_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> + <textarea name="commentcontent" class="commentcontent form-control" placeholder="{vtranslate('LBL_POST_YOUR_COMMENT_HERE', $MODULE_NAME)}" rows="{$COMMENT_TEXTAREA_DEFAULT_ROWS}"></textarea> </div> <div class="row"> <div class="col-xs-4 pull-right"> diff --git a/layouts/v7/modules/Vtiger/dashboards/DashBoardHeader.tpl b/layouts/v7/modules/Vtiger/dashboards/DashBoardHeader.tpl index 11737f390cd775c3b9c26c13df9c7dbf04c2dd17..acb399727682e0debaa7ab289635a267f9e55797 100644 --- a/layouts/v7/modules/Vtiger/dashboards/DashBoardHeader.tpl +++ b/layouts/v7/modules/Vtiger/dashboards/DashBoardHeader.tpl @@ -50,7 +50,7 @@ </ul> {else if $MODULE_PERMISSION} - <button class='btn addButton dropdown-toggle' disabled="disabled" data-toggle='dropdown'> + <button class='btn btn-default addButton dropdown-toggle' disabled="disabled" data-toggle='dropdown'> <strong>{vtranslate('LBL_ADD_WIDGET')}</strong> <i class="caret"></i> </button> diff --git a/layouts/v7/modules/Vtiger/partials/RelatedListHeader.tpl b/layouts/v7/modules/Vtiger/partials/RelatedListHeader.tpl index 601b670aa0436261582d6e07a1f09377536e2fb5..f31d656475edd26e0b60ff41164088db4533ce74 100644 --- a/layouts/v7/modules/Vtiger/partials/RelatedListHeader.tpl +++ b/layouts/v7/modules/Vtiger/partials/RelatedListHeader.tpl @@ -1,52 +1,60 @@ +{*+********************************************************************************** +* The contents of this file are subject to the vtiger CRM Public License Version 1.1 +* ("License"); You may not use this file except in compliance with the License +* The Original Code is: vtiger CRM Open Source +* The Initial Developer of the Original Code is vtiger. +* Portions created by vtiger are Copyright (C) vtiger. +* All Rights Reserved. +*************************************************************************************} + {strip} -<div class="relatedHeader"> - <div class="btn-toolbar row"> - <div class="col-lg-6 col-md-6 col-sm-6 btn-toolbar"> - {foreach item=RELATED_LINK from=$RELATED_LIST_LINKS['LISTVIEWBASIC']} - <div class="btn-group"> - {assign var=DROPDOWNS value=$RELATED_LINK->get('linkdropdowns')} - {if count($DROPDOWNS) gt 0} - <div class="btn-group"> - <a class="btn dropdown-toggle" href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="200" data-close-others="false" style="width:20px;height:18px;"> - <img title="{$RELATED_LINK->getLabel()}" alt="{$RELATED_LINK->getLabel()}" src="{vimage_path("{$RELATED_LINK->getIcon()}")}"> - </a> - <ul class="dropdown-menu"> - {foreach item=DROPDOWN from=$DROPDOWNS} - <li><a id="{$RELATED_MODULE_NAME}_relatedlistView_add_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DROPDOWN['label'])}" class="{$RELATED_LINK->get('linkclass')}" href='javascript:void(0)' data-documentType="{$DROPDOWN['type']}" data-url="{$DROPDOWN['url']}" data-name="{$RELATED_MODULE_NAME}" data-firsttime="{$DROPDOWN['firsttime']}"><i class="icon-plus"></i> {vtranslate($DROPDOWN['label'], $RELATED_MODULE_NAME)}</a></li> - {/foreach} - </ul> - </div> - {else} - {assign var=IS_SELECT_BUTTON value={$RELATED_LINK->get('_selectRelation')}} - {* setting button module attribute to Events or Calendar based on link label *} - {assign var=LINK_LABEL value={$RELATED_LINK->get('linklabel')}} - {if $RELATED_LINK->get('_linklabel') === '_add_event'} - {assign var=RELATED_MODULE_NAME value='Events'} - {elseif $RELATED_LINK->get('_linklabel') === '_add_task'} - {assign var=RELATED_MODULE_NAME value='Calendar'} - {/if} - {if $IS_SELECT_BUTTON || $IS_CREATE_PERMITTED} - <button type="button" module="{$RELATED_MODULE_NAME}" class="btn addButton btn-default - {if $IS_SELECT_BUTTON eq true} selectRelation {/if} " - {if $IS_SELECT_BUTTON eq true} data-moduleName={$RELATED_LINK->get('_module')->get('name')} {/if} - {if ($RELATED_LINK->isPageLoadLink())} - {if $RELATION_FIELD} data-name="{$RELATION_FIELD->getName()}" {/if} - data-url="{$RELATED_LINK->getUrl()}{if $SELECTED_MENU_CATEGORY}&app={$SELECTED_MENU_CATEGORY}{/if}" - {/if} - {if $IS_SELECT_BUTTON neq true}name="addButton"{/if}>{if $IS_SELECT_BUTTON eq false}<i class="fa fa-plus"></i> {/if} {$RELATED_LINK->getLabel()}</button> + <div class="relatedHeader"> + <div class="btn-toolbar row"> + <div class="col-lg-6 col-md-6 col-sm-6 btn-toolbar"> + {foreach item=RELATED_LINK from=$RELATED_LIST_LINKS['LISTVIEWBASIC']} + <div class="btn-group"> + {assign var=DROPDOWNS value=$RELATED_LINK->get('linkdropdowns')} + {if count($DROPDOWNS) gt 0} + <a class="btn dropdown-toggle" href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="200" data-close-others="false" style="width:20px;height:18px;"> + <img title="{$RELATED_LINK->getLabel()}" alt="{$RELATED_LINK->getLabel()}" src="{vimage_path("{$RELATED_LINK->getIcon()}")}"> + </a> + <ul class="dropdown-menu"> + {foreach item=DROPDOWN from=$DROPDOWNS} + <li><a id="{$RELATED_MODULE_NAME}_relatedlistView_add_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DROPDOWN['label'])}" class="{$RELATED_LINK->get('linkclass')}" href='javascript:void(0)' data-documentType="{$DROPDOWN['type']}" data-url="{$DROPDOWN['url']}" data-name="{$RELATED_MODULE_NAME}" data-firsttime="{$DROPDOWN['firsttime']}"><i class="icon-plus"></i> {vtranslate($DROPDOWN['label'], $RELATED_MODULE_NAME)}</a></li> + {/foreach} + </ul> + {else} + {assign var=IS_SELECT_BUTTON value={$RELATED_LINK->get('_selectRelation')}} + {* setting button module attribute to Events or Calendar based on link label *} + {assign var=LINK_LABEL value={$RELATED_LINK->get('linklabel')}} + {if $RELATED_LINK->get('_linklabel') === '_add_event'} + {assign var=RELATED_MODULE_NAME value='Events'} + {elseif $RELATED_LINK->get('_linklabel') === '_add_task'} + {assign var=RELATED_MODULE_NAME value='Calendar'} + {/if} + {if $IS_SELECT_BUTTON || $IS_CREATE_PERMITTED} + <button type="button" module="{$RELATED_MODULE_NAME}" class="btn btn-default + {if $IS_SELECT_BUTTON eq true} selectRelation{else} addButton" name="addButton{/if}" + {if $IS_SELECT_BUTTON eq true} data-moduleName="{$RELATED_LINK->get('_module')->get('name')}" {/if} + {if ($RELATED_LINK->isPageLoadLink())} + {if $RELATION_FIELD} data-name="{$RELATION_FIELD->getName()}" {/if} + data-url="{$RELATED_LINK->getUrl()}{if $SELECTED_MENU_CATEGORY}&app={$SELECTED_MENU_CATEGORY}{/if}" + {/if} + >{if $IS_SELECT_BUTTON eq false}<i class="fa fa-plus"></i> {/if} {$RELATED_LINK->getLabel()}</button> + {/if} {/if} - {/if} - </div> - {/foreach} - </div> - {assign var=CLASS_VIEW_ACTION value='relatedViewActions'} - {assign var=CLASS_VIEW_PAGING_INPUT value='relatedViewPagingInput'} - {assign var=CLASS_VIEW_PAGING_INPUT_SUBMIT value='relatedViewPagingInputSubmit'} - {assign var=CLASS_VIEW_BASIC_ACTION value='relatedViewBasicAction'} - {assign var=PAGING_MODEL value=$PAGING} - {assign var=RECORD_COUNT value=$RELATED_RECORDS|@count} - {assign var=PAGE_NUMBER value=$PAGING->get('page')} - {include file="Pagination.tpl"|vtemplate_path:$MODULE SHOWPAGEJUMP=true} - </div> -</div> + </div> + {/foreach} + + </div> + {assign var=CLASS_VIEW_ACTION value='relatedViewActions'} + {assign var=CLASS_VIEW_PAGING_INPUT value='relatedViewPagingInput'} + {assign var=CLASS_VIEW_PAGING_INPUT_SUBMIT value='relatedViewPagingInputSubmit'} + {assign var=CLASS_VIEW_BASIC_ACTION value='relatedViewBasicAction'} + {assign var=PAGING_MODEL value=$PAGING} + {assign var=RECORD_COUNT value=$RELATED_RECORDS|@count} + {assign var=PAGE_NUMBER value=$PAGING->get('page')} + {include file="Pagination.tpl"|vtemplate_path:$MODULE SHOWPAGEJUMP=true} + </div> + </div> {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/partials/Topbar.tpl b/layouts/v7/modules/Vtiger/partials/Topbar.tpl index edd04254e99d55c8271b74beffc4330e9fd16f7d..50f71257254d3b461f69f3c4ee17df3cfcd84afb 100644 --- a/layouts/v7/modules/Vtiger/partials/Topbar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Topbar.tpl @@ -26,7 +26,7 @@ <span class="app-icon fa fa-bars"></span> </div> </div> - <div class="logo-container col-lg-8 col-md-8 col-sm-8 col-xs-8"> + <div class="logo-container col-lg-9 col-md-9 col-sm-9 col-xs-9"> <div class="row"> <a href="index.php" class="company-logo"> <img src="{$COMPANY_LOGO->get('imagepath')}" alt="{$COMPANY_LOGO->get('alt')}"/> diff --git a/layouts/v7/modules/Vtiger/resources/AdvanceSearchList.js b/layouts/v7/modules/Vtiger/resources/AdvanceSearchList.js index bf1d434bde0629bdee0c91b66746ecb4db040d38..56d99c86fca2d3ab54836c66eda0b3259a3e1c09 100644 --- a/layouts/v7/modules/Vtiger/resources/AdvanceSearchList.js +++ b/layouts/v7/modules/Vtiger/resources/AdvanceSearchList.js @@ -72,39 +72,7 @@ Vtiger_List_Js('Vtiger_AdvanceSearchList_Js',{},{ window.location.href = url +'&'+ $.param(postData); }); }, - - registerAcceptRecordClickEvent: function(){ - jQuery('#searchResults-container').on('click', '.acceptCase', function(e){ - var elem = jQuery(e.currentTarget); - var originalDropDownMenu = elem.closest('.dropdown-menu').data('original-menu'); - var parent = app.helper.getDropDownmenuParent(originalDropDownMenu); - var recordId = parent.closest('tr').data('id'); - var params = { - 'module' : 'Cases', - 'action' : 'SaveAjax', - 'record' : recordId, - 'mode' : 'updateCaseStatus' - } - app.helper.showProgress(); - app.request.post({data:params}).then( - function(error,data) { - app.helper.hideProgress(); - if(error === null) { - app.helper.showSuccessNotification({ - 'message':app.vtranslate('JS_CASE_ACCEPTED_SUCCESSFULLY') - }); - window.location.href = data.url; - } else { - app.helper.showErrorNotification({message : app.vtranslate(error.message)}); - } - } - ); - e.stopPropagation(); - }); - }, - - registerDeleteRecordClickEvent :function(){ var thisInstance = this; jQuery('#searchResults-container').off('click'); diff --git a/layouts/v7/modules/Vtiger/resources/Detail.js b/layouts/v7/modules/Vtiger/resources/Detail.js index f4dc16c66a72e6ce12a14298103bbbd9ff41d26d..8ca9532e75299469259aa7040897bb5a471ae34e 100644 --- a/layouts/v7/modules/Vtiger/resources/Detail.js +++ b/layouts/v7/modules/Vtiger/resources/Detail.js @@ -2006,7 +2006,6 @@ Vtiger.Class("Vtiger_Detail_Js",{ var detailContentsHolder = this.getContentHolder(); var clonedCommentBlock = jQuery('.basicEditCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicEditCommentBlock hide').addClass('addCommentBlock'); clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent'); - clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); return clonedCommentBlock; }, @@ -2018,7 +2017,6 @@ Vtiger.Class("Vtiger_Detail_Js",{ var detailContentsHolder = this.getContentHolder(); var clonedCommentBlock = jQuery('.basicAddCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicAddCommentBlock hide').addClass('addCommentBlock'); clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent'); - clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); return clonedCommentBlock; }, @@ -2106,6 +2104,24 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); }, + toggleCommentContent: function (e) { + var currentTarget = jQuery(e.currentTarget); + var commentContentBlock = currentTarget.closest('.commentInfoContentBlock'); + var commentContentInfo = commentContentBlock.find('.commentInfoContent'); + var toggleElement = jQuery('<div><a class="pull-right toggleComment" style="color: blue;"><small></small></a><div>'); + var fullComment = vtUtils.linkifyStr(commentContentInfo.data('fullcomment')); + + if (currentTarget.hasClass('showMore')) { + toggleElement.find('small').text(commentContentInfo.data('less')); + commentContentInfo.html(fullComment+toggleElement.clone().html()); + } else { + var maxLength = commentContentInfo.data('maxlength'); + toggleElement.find('small').text(commentContentInfo.data('more')); + toggleElement.find('.toggleComment').addClass('showMore'); + commentContentInfo.html(vtUtils.htmlSubstring(fullComment, maxLength)+"..."+toggleElement.clone().html()); + } + }, + toggleRollupComments : function (e) { e.stopPropagation(); e.preventDefault(); @@ -2114,9 +2130,12 @@ Vtiger.Class("Vtiger_Detail_Js",{ var moduleName = currentTarget.attr('module'); var recordId = currentTarget.attr('record'); var rollupId = currentTarget.attr('rollupid'); - var rollupstatus = currentTarget.attr('rollup-status'); + var rollup_status = currentTarget.attr('rollup-status'); + var rollupstatus = 0; + if (rollup_status == 0) { + rollupstatus = 1; + } var viewtype = currentTarget.data('view'); - var startindex = parseInt(currentTarget.attr('startindex')); var contents, url, params; if(viewtype == 'relatedlist') { @@ -2133,7 +2152,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ } else { url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+ recordId+'&mode=showRecentComments'+'&rollupid='+rollupId - +'&rollup_status=0&parent='+moduleName+'&rollup-toggle=1&limit=5'; + +'&rollup_status='+rollupstatus+'&parent='+moduleName+'&rollup-toggle=1&limit=5'; contents = jQuery('div[data-name="ModComments"] div.widget_contents'); params = { 'type' : 'GET', @@ -2144,7 +2163,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ contents.html(data); vtUtils.enableTooltips(); self.registerRollupCommentsSwitchEvent(); - jQuery('#rollupcomments').bootstrapSwitch('state', !rollupstatus, true); + jQuery('#rollupcomments').bootstrapSwitch('state', rollupstatus, true); }); } }, @@ -2846,7 +2865,13 @@ Vtiger.Class("Vtiger_Detail_Js",{ var commentInfoContent = commentInfoBlock.find('.commentInfoContent'); var commentReason = commentInfoBlock.find('[name="editReason"]'); var editCommentBlock = self.getEditCommentBlock(); - editCommentBlock.find('.commentcontent').text(commentInfoContent.text()); + var fullComment = commentInfoContent.data('fullcomment'); + if (fullComment) { + fullComment = app.helper.getDecodedValue(fullComment); + } else { + fullComment = commentInfoContent.text(); + } + editCommentBlock.find('.commentcontent').text(fullComment); editCommentBlock.find('[name="reasonToEdit"]').val(commentReason.text()); editCommentBlock.find('[name="is_private"]').val(commentInfoBlock.find('[name="is_private"]').val()); /*commentInfoContent.hide(); @@ -2883,7 +2908,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({data: params}).then( function(err, data) { if (data) { - commentArea = commentInfoBlock.find('.commentcontent'); + var commentArea = commentInfoBlock.find('.commentcontent'); commentArea.val(data.usersString); commentArea.focus(); var strLength= commentArea.val().length * 2; @@ -2907,6 +2932,10 @@ Vtiger.Class("Vtiger_Detail_Js",{ recentDocumentsTab.trigger('click'); }); + detailContentsHolder.off('.toggleComment').on('click', '.toggleComment', function (e) { + self.toggleCommentContent(e); + }); + app.event.on('post.summarywidget.load',function(event,widgetContainer){ vtUtils.applyFieldElementsView(widgetContainer); diff --git a/layouts/v7/modules/Vtiger/resources/List.js b/layouts/v7/modules/Vtiger/resources/List.js index fd38877a4fd18ff880b853ff2f587b98ded0ac39..aed3b587b663640cf7cf298495ca99323e960942 100644 --- a/layouts/v7/modules/Vtiger/resources/List.js +++ b/layouts/v7/modules/Vtiger/resources/List.js @@ -2426,38 +2426,7 @@ Vtiger.Class("Vtiger_List_Js", { self.registerFloatingThead(); }); }, - /* - * Function to register the list view accept record click event - */ - registerAcceptRecordClickEvent: function () { - jQuery('#page').on('click', '.acceptCase', function (e) { - var elem = jQuery(e.currentTarget); - var originalDropDownMenu = elem.closest('.dropdown-menu').data('original-menu'); - var parent = app.helper.getDropDownmenuParent(originalDropDownMenu); - var recordId = parent.closest('tr').data('id'); - var params = { - 'module': 'Cases', - 'action': 'SaveAjax', - 'record': recordId, - 'mode': 'updateCaseStatus' - } - app.helper.showProgress(); - app.request.post({data: params}).then( - function (error, data) { - app.helper.hideProgress(); - if (error === null) { - app.helper.showSuccessNotification({ - 'message': app.vtranslate('JS_CASE_ACCEPTED_SUCCESSFULLY') - }); - window.location.href = data.url; - } else { - app.helper.showErrorNotification({message: app.vtranslate(error.message)}); - } - } - ); - e.stopPropagation(); - }); - }, + registerEvents: function () { var thisInstance = this; this._super(); @@ -2481,7 +2450,6 @@ Vtiger.Class("Vtiger_List_Js", { this.registerDynamicDropdownPosition(); this.registerDropdownPosition(); this.registerConfigureColumnsEvents(); - this.registerAcceptRecordClickEvent(); var recordSelectTrackerObj = this.getRecordSelectTrackerInstance(); recordSelectTrackerObj.registerEvents(); diff --git a/layouts/v7/modules/Vtiger/resources/MergeRecords.js b/layouts/v7/modules/Vtiger/resources/MergeRecords.js index 73be3720da2859c233dd8566df5028ad3ca73073..660f0bf271a3806183f93bf0b722fdce110235bc 100644 --- a/layouts/v7/modules/Vtiger/resources/MergeRecords.js +++ b/layouts/v7/modules/Vtiger/resources/MergeRecords.js @@ -50,8 +50,11 @@ Vtiger.Class('Vtiger_MergeRecords_Js',{},{ // Adding Scroll var offset = container.find('.modal-body .datacontent').offset(); var viewPortHeight = $(window).height()-60; + if (offset) { + viewPortHeight = (viewPortHeight-offset['top']); + } var params = { - setHeight:(viewPortHeight-offset['top'])+'px' + setHeight:viewPortHeight+'px' }; app.helper.showVerticalScroll(container.find('.modal-body .datacontent'), params); diff --git a/layouts/v7/modules/Vtiger/resources/Utils.js b/layouts/v7/modules/Vtiger/resources/Utils.js index 6332b26ed71c00ec67370d61cd7ae88e3fff8b8f..452fc4c19527f773512899a3cae485afe247b4b9 100644 --- a/layouts/v7/modules/Vtiger/resources/Utils.js +++ b/layouts/v7/modules/Vtiger/resources/Utils.js @@ -1,3 +1,11 @@ +/*+********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.1 + * ("License"); You may not use this file except in compliance with the License + * The Original Code is: vtiger CRM Open Source + * The Initial Developer of the Original Code is vtiger. + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. + ************************************************************************************/ var vtUtils = { @@ -240,6 +248,51 @@ var vtUtils = { element.trigger('Vtiger.Qtip.HideMesssage'); }, + linkifyStr : function(str) { + var options = {'TLDs':267}; + return anchorme.js(str,options); + }, + + htmlSubstring : function(content, maxlength) { + var m, r = /<([^>\s]*)[^>]*>/g, + stack = [], + lasti = 0, + result = ''; + + //for each tag, while we don't have enough characters + while ((m = r.exec(content)) && maxlength) { + //get the text substring between the last tag and this one + var temp = content.substring(lasti, m.index).substr(0, maxlength); + //append to the result and count the number of characters added + result += temp; + maxlength -= temp.length; + lasti = r.lastIndex; + + if (content) { + result += m[0]; + if (m[1].indexOf('/') === 0) { + //if this is a closing tag, then pop the stack (does not account for bad html) + stack.pop(); + } else if (m[1].lastIndexOf('/') !== m[1].length - 1) { + //if this is not a self closing tag then push it in the stack + stack.push(m[1]); + } + } + } + + //add the remainder of the string, if needed (there are no more tags in here) + result += content.substr(lasti, maxlength); + + //fix the unclosed tags + while (stack.length) { + var unclosedtag = stack.pop(); + if(jQuery.inArray(unclosedtag,['br']) == -1){ + result += '</' + unclosedtag + '>'; + } + } + return result; + }, + showValidationMessage : function(element,message,params) { if(element.hasClass('select2')) { element = app.helper.getSelect2FromSelect(element); diff --git a/layouts/v7/modules/Vtiger/resources/Vtiger.js b/layouts/v7/modules/Vtiger/resources/Vtiger.js index af391895841c856edbbcc1c775453a31b747b351..a4d3519bf115964925b43a6e985c00ad078c2790 100644 --- a/layouts/v7/modules/Vtiger/resources/Vtiger.js +++ b/layouts/v7/modules/Vtiger/resources/Vtiger.js @@ -372,7 +372,6 @@ Vtiger.Class('Vtiger_Index_Js', { this.registerMultiUpload(); this.registerHoverEventOnAttachment(); //this.addBodyScroll(); - this.mentionerCallBack(); this.modulesMenuScrollbar(); Vtiger_Index_Js.registerActivityReminder(); //reference preview event registeration @@ -1291,18 +1290,6 @@ Vtiger.Class('Vtiger_Index_Js', { app.helper.showVerticalScroll(jQuery("#modnavigator #modules-menu"),{autoHideScrollbar:true}); }, - mentionerCallBack: function() { - jQuery(document).on('textComplete:select', '.mention_listener', function(e, word, strategy) { - //First charecter is " " if user mentioned in the begining - //Removing it here - var value = $(e.currentTarget).val(); - value = app.getDecodedValue(value); - if(value.charAt(0) === ' ') value = value.substr(1); - $(e.currentTarget).val(value); - Vtiger_Index_Js.hideNC = false; - }); - }, - registerChangeTemplateEvent: function (container, recordId) { var sourceModule = container.find('#sourceModuleName').val(); var thisInstance = this; diff --git a/layouts/v7/skins/contact/style.css b/layouts/v7/skins/contact/style.css index fcae04216a06dbc4a32e5c0c2aa79a2e2f3b72e7..1d40898d873abfd6e1076b5574c8a751849d66cc 100644 --- a/layouts/v7/skins/contact/style.css +++ b/layouts/v7/skins/contact/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/inventory/style.css b/layouts/v7/skins/inventory/style.css index 118106d8854bf244822f331750a97be42d57eddb..2d13b0999bd98b78f1e2411cb3bd76c1ad3f7468 100644 --- a/layouts/v7/skins/inventory/style.css +++ b/layouts/v7/skins/inventory/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/marketing/style.css b/layouts/v7/skins/marketing/style.css index 7332f871837a1d782bda31ba74aae011872227ad..55eb357a8fc348fb7168f50dbc6f4f5bb9f8cc2a 100644 --- a/layouts/v7/skins/marketing/style.css +++ b/layouts/v7/skins/marketing/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/marketing_and_sales/style.css b/layouts/v7/skins/marketing_and_sales/style.css index f07eaabfcb855d9781e2a1a8b22bb42e12fe0102..a5f0c0a9db2cac89c2570968d5d75cf27db596ae 100644 --- a/layouts/v7/skins/marketing_and_sales/style.css +++ b/layouts/v7/skins/marketing_and_sales/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/project/style.css b/layouts/v7/skins/project/style.css index 75699fa8e027b06f990dbcaf033be4942a54e2a1..d8095aa5da7e982a2d7acad7f34c1d32a43dcee2 100644 --- a/layouts/v7/skins/project/style.css +++ b/layouts/v7/skins/project/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/sales/style.css b/layouts/v7/skins/sales/style.css index 4131e8604a87babb580108e54a0c3dd761b12fe7..b8b4f520defc060b6f59c10028a51a7c864e8cf3 100644 --- a/layouts/v7/skins/sales/style.css +++ b/layouts/v7/skins/sales/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/support/style.css b/layouts/v7/skins/support/style.css index 666fef33377d6ff3dfbac0fb942e5c89fe06f0b3..311824fc876aa5dd24e190ab4b43619457470036 100644 --- a/layouts/v7/skins/support/style.css +++ b/layouts/v7/skins/support/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/layouts/v7/skins/tools/style.css b/layouts/v7/skins/tools/style.css index d728210868e0203ac86287ad3c166d9120625bd3..293fbd4a658b6fc14c728944e6a6bada0f54bb28 100644 --- a/layouts/v7/skins/tools/style.css +++ b/layouts/v7/skins/tools/style.css @@ -102,7 +102,6 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; - width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -199,14 +198,13 @@ body { } .company-logo { height: 40px; - width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; } .company-logo img { height: 100%; - width: auto; + width: 100%; } .navbar .fa { font-size: 15px; @@ -277,13 +275,11 @@ body { } .global-nav .logo-container { border-bottom: 0; - width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; - width: 150px; } .notificationMessageHolder { padding-left: 45%; diff --git a/libraries/nusoap/nusoap.php b/libraries/nusoap/nusoap.php index 3a92d51e028497328377b3688d99532c0461164d..ca18d858abebb492e580616961c0052d4caaa8d9 100644 --- a/libraries/nusoap/nusoap.php +++ b/libraries/nusoap/nusoap.php @@ -59,7 +59,7 @@ if (!isset($GLOBALS['_transient']['static']['nusoap_base'])) { $GLOBALS['_transient']['static']['nusoap_base']->globalDebugLevel = 9; global $soap_log; -$soap_log =& LoggerManager::getLogger('SOAP'); +$soap_log = LoggerManager::getLogger('SOAP'); /** * * nusoap_base @@ -4726,7 +4726,7 @@ class wsdl extends nusoap_base { if (isset($this->schemas[$ns])) { $this->debug("in getTypeDef: have schema for namespace $ns"); for ($i = 0; $i < count($this->schemas[$ns]); $i++) { - $xs = &$this->schemas[$ns][$i]; + $xs = $this->schemas[$ns][$i]; $t = $xs->getTypeDef($type); $this->appendDebug($xs->getDebug()); $xs->clearDebug(); @@ -6128,7 +6128,7 @@ class soap_parser extends nusoap_base { // add placeholder to href array $this->multirefs[$id][$pos] = 'placeholder'; // add set a reference to it as the result value - $this->message[$pos]['result'] =& $this->multirefs[$id][$pos]; + $this->message[$pos]['result'] = $this->multirefs[$id][$pos]; // build complexType values } elseif($this->message[$pos]['children'] != ''){ // if result has already been generated (struct/array) @@ -6330,14 +6330,14 @@ class soap_parser extends nusoap_base { } elseif($this->message[$pos]['type'] == 'array' || $this->message[$pos]['type'] == 'Array'){ $this->debug('in buildVal, adding array '.$this->message[$pos]['name']); foreach($children as $child_pos){ - $params[] = &$this->message[$child_pos]['result']; + $params[] = $this->message[$child_pos]['result']; } // apache Map type: java hashtable } elseif($this->message[$pos]['type'] == 'Map' && $this->message[$pos]['type_namespace'] == 'http://xml.apache.org/xml-soap'){ $this->debug('in buildVal, Java Map '.$this->message[$pos]['name']); foreach($children as $child_pos){ $kv = explode("|",$this->message[$child_pos]['children']); - $params[$this->message[$kv[1]]['result']] = &$this->message[$kv[2]]['result']; + $params[$this->message[$kv[1]]['result']] = $this->message[$kv[2]]['result']; } // generic compound type //} elseif($this->message[$pos]['type'] == 'SOAPStruct' || $this->message[$pos]['type'] == 'struct') { @@ -6352,16 +6352,16 @@ class soap_parser extends nusoap_base { // foreach($children as $child_pos){ if($notstruct){ - $params[] = &$this->message[$child_pos]['result']; + $params[] = $this->message[$child_pos]['result']; } else { if (isset($params[$this->message[$child_pos]['name']])) { // de-serialize repeated element name into an array if ((!is_array($params[$this->message[$child_pos]['name']])) || (!isset($params[$this->message[$child_pos]['name']][0]))) { $params[$this->message[$child_pos]['name']] = array($params[$this->message[$child_pos]['name']]); } - $params[$this->message[$child_pos]['name']][] = &$this->message[$child_pos]['result']; + $params[$this->message[$child_pos]['name']][] = $this->message[$child_pos]['result']; } else { - $params[$this->message[$child_pos]['name']] = &$this->message[$child_pos]['result']; + $params[$this->message[$child_pos]['name']] = $this->message[$child_pos]['result']; } } } @@ -6516,7 +6516,7 @@ class soapclient2 extends nusoap_base { // instantiate wsdl object and parse wsdl file $this->debug('instantiating wsdl class with doc: '.$endpoint); - $this->wsdl =& new wsdl($this->wsdlFile,$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout); + $this->wsdl = new wsdl($this->wsdlFile,$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout); } $this->appendDebug($this->wsdl->getDebug()); $this->wsdl->clearDebug(); @@ -6767,7 +6767,7 @@ class soapclient2 extends nusoap_base { case ereg('^http',$this->endpoint): $this->debug('transporting via HTTP'); if($this->persistentConnection == true && is_object($this->persistentConnection)){ - $http =& $this->persistentConnection; + $http = $this->persistentConnection; } else { $http = new soap_transport_http($this->endpoint); if ($this->persistentConnection) { diff --git a/modules/Calendar/models/Module.php b/modules/Calendar/models/Module.php index 301b21cc8b22f8eb97cb43961ec30d9ada8a5b72..f355e427b91c5355237794793e1204524ac13919 100644 --- a/modules/Calendar/models/Module.php +++ b/modules/Calendar/models/Module.php @@ -46,7 +46,7 @@ class Calendar_Module_Model extends Vtiger_Module_Model { * @return <String> */ public function getCalendarViewUrl() { - return 'index.php?module='.$this->get('name').'&view='.$this->getCalendarViewName(); + return 'index.php?module='.$this->get('name').'&view=Calendar'; } /** diff --git a/modules/Install/models/Utils.php b/modules/Install/models/Utils.php index 5e6e22d8b1e5d1e133d62633171bcc4107bc0464..1307398636b83a13ba070e508c33de7a82205450 100644 --- a/modules/Install/models/Utils.php +++ b/modules/Install/models/Utils.php @@ -102,7 +102,7 @@ class Install_Utils_Model { 'memory_limit' => '32', 'error_reporting' => 'E_WARNING & ~E_NOTICE', 'log_errors' => 'Off', - 'short_open_tag' => 'On' + 'short_open_tag' => 'Off' ); /** diff --git a/modules/Settings/MailConverter/models/Record.php b/modules/Settings/MailConverter/models/Record.php index 43ec6f8d4021c92d3df94dca20bd65437eac4335..da6ce6b6be5cf7e0919f832942537931b720e60b 100644 --- a/modules/Settings/MailConverter/models/Record.php +++ b/modules/Settings/MailConverter/models/Record.php @@ -328,7 +328,7 @@ class Settings_MailConverter_Record_Model extends Settings_Vtiger_Record_Model { */ public static function getInstanceById($recordId) { $db = PearDatabase::getInstance(); - $result = $db->pquery('SELECT * FROM vtiger_mailscanner WHERE scannerid = ', array($recordId)); + $result = $db->pquery('SELECT * FROM vtiger_mailscanner WHERE scannerid = ?', array($recordId)); if ($db->num_rows($result)) { $recordModel = self::getCleanInstance(); $recordModel->setData($db->query_result_rowdata($result)); diff --git a/modules/Settings/MailConverter/models/RuleRecord.php b/modules/Settings/MailConverter/models/RuleRecord.php index b1fce72e72675b1c9440b2ec8e8e9037adc4a018..443578f1344c92e3da1e394aadb926d96b83781d 100644 --- a/modules/Settings/MailConverter/models/RuleRecord.php +++ b/modules/Settings/MailConverter/models/RuleRecord.php @@ -180,7 +180,7 @@ class Settings_MailConverter_RuleRecord_Model extends Settings_Vtiger_Record_Mod */ public static function getInstanceById($recordId) { $db = PearDatabase::getInstance(); - $result = $db->pquery('SELECT * FROM vtiger_mailscanner_rules WHERE ruleid = ', array($recordId)); + $result = $db->pquery('SELECT * FROM vtiger_mailscanner_rules WHERE ruleid = ?', array($recordId)); if ($db->num_rows($result)) { $recordModel = new self(); $recordModel->setData($db->query_result_rowdata($result)); diff --git a/modules/Settings/Workflows/models/Field.php b/modules/Settings/Workflows/models/Field.php index 9949b0b8df787c52647f63b0b09305ac1a3d5692..17ce3c22267637636752a660e84d2089174280bb 100644 --- a/modules/Settings/Workflows/models/Field.php +++ b/modules/Settings/Workflows/models/Field.php @@ -16,27 +16,42 @@ class Settings_Workflows_Field_Model extends Vtiger_Field_Model { */ public static function getAdvancedFilterOptions() { return array( - 'is' => 'is', - 'contains' => 'contains', - 'does not contain' => 'does not contain', - 'starts with' => 'starts with', - 'ends with' => 'ends with', - 'has changed' => 'has changed', - 'has changed to' => 'has changed to', - 'is empty' => 'is empty', - 'is not empty' => 'is not empty', - 'less than' => 'less than', - 'greater than' => 'greater than', - 'does not equal' => 'does not equal', - 'less than or equal to' => 'less than or equal to', - 'greater than or equal to' => 'greater than or equal to', - 'has changed' => 'has changed', - 'has changed to' => 'has changed to', - 'has changed from' => 'has changed from', - 'before' => 'before', - 'after' => 'after', - 'between' => 'between', - 'is added' => 'is added', + 'is' => 'LBL_IS', + 'contains' => 'LBL_CONTAINS', + 'does not contain' => 'LBL_DOES_NOT_CONTAIN', + 'starts with' => 'LBL_STARTS_WITH', + 'ends with' => 'LBL_ENDS_WITH', + 'has changed' => 'LBL_HAS_CHANGED', + 'has changed to' => 'LBL_HAS_CHANGED_TO', + 'is empty' => 'LBL_IS_EMPTY', + 'is not empty' => 'LBL_IS_NOT_EMPTY', + 'less than' => 'LBL_LESS_THAN', + 'greater than' => 'LBL_GREATER_THAN', + 'does not equal' => 'LBL_NOT_EQUAL_TO', + 'less than or equal to' => 'LBL_LESS_THAN_OR_EQUAL_TO', + 'greater than or equal to' => 'LBL_GREATER_THAN_OR_EQUAL_TO', + 'has changed from' => 'LBL_HAS_CHANGED_FROM', + 'before' => 'LBL_BEFORE', + 'after' => 'LBL_AFTER', + 'between' => 'LBL_BETWEEN', + 'is added' => 'LBL_IS_ADDED', + 'equal to' => 'LBL_EQUALS', + 'is not' => 'LBL_IS_NOT', + 'is today' => 'LBL_IS_TODAY', + 'is tomorrow' => 'LBL_IS_TOMORROW', + 'is yesterday' => 'LBL_IS_YESTERDAY', + 'less than hours before' => 'LBL_LESS_THAN_HOURS_BEFORE', + 'less than hours later' => 'LBL_LESS_THAN_HOURS_LATER', + 'more than hours before' => 'LBL_MORE_THAN_HOURS_BEFORE', + 'more than hours later' => 'LBL_MORE_THAN_HOURS_LATER', + 'less than days ago' => 'LBL_LESS_THAN_DAYS_AGO', + 'less than days later' => 'LBL_LESS_THAN_DAYS_LATER', + 'more than days ago' => 'LBL_MORE_THAN_DAYS_AGO', + 'more than days later' => 'LBL_MORE_THAN_DAYS_LATER', + 'days ago' => 'LBL_DAYS_AGO', + 'days later' => 'LBL_DAYS_LATER', + 'in less than' => 'LBL_IN_LESS_THAN', + 'in more than' => 'LBL_IN_MORE_THAN', ); } diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php index d945cf920c759b271d84ee3219d734a4c48f2d01..c84a1483d590f5e09578da71ff3e8dd21ca33252 100644 --- a/modules/Vtiger/models/Field.php +++ b/modules/Vtiger/models/Field.php @@ -1329,7 +1329,7 @@ class Vtiger_Field_Model extends Vtiger_Field { $picklistValues = $this->getPicklistValues(); $tableName = "vtiger_$fieldName"; if (Vtiger_Utils::CheckTable($tableName)) { - if (is_array($picklistValues)) { + if (is_array($picklistValues) && count($picklistValues)) { $result = $db->pquery("SELECT $fieldName, color FROM $tableName WHERE $fieldName IN (".generateQuestionMarks($picklistValues).")", array_keys($picklistValues)); while ($row = $db->fetch_row($result)) { $picklistColors[$row[$fieldName]] = $row['color']; diff --git a/modules/Vtiger/uitypes/Double.php b/modules/Vtiger/uitypes/Double.php index 74e19aa484edb7edc534b42a7435c10f2a2f92dd..7d9df554dc89a049894ee8e2a37f4e82455454f1 100644 --- a/modules/Vtiger/uitypes/Double.php +++ b/modules/Vtiger/uitypes/Double.php @@ -24,11 +24,7 @@ class Vtiger_Double_UIType extends Vtiger_Base_UIType { * @return <Object> */ public function getDisplayValue($value) { - $value = decimalFormat($value); - if ($value) { - $value = CurrencyField::convertToUserFormat($value, NULL, true); - } - return $value; + return decimalFormat($value); } /** diff --git a/modules/Vtiger/views/Detail.php b/modules/Vtiger/views/Detail.php index e3d668df0c610e4da3743401d5ab1bb1ebbbb8a4..2d478f277ed2f94339633fa7f59487445f267cf0 100644 --- a/modules/Vtiger/views/Detail.php +++ b/modules/Vtiger/views/Detail.php @@ -472,7 +472,7 @@ class Vtiger_Detail_View extends Vtiger_Index_View { if($rollupsettings['rollup_status']) { $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName); - $recentComments = $parentRecordModel->getRollupCommentsForModule(0, 5); + $recentComments = $parentRecordModel->getRollupCommentsForModule(0, 6); }else { $recentComments = ModComments_Record_Model::getRecentComments($parentId, $pagingModel); } diff --git a/packages/vtiger/optional/Arabic_ar_ae.zip b/packages/vtiger/optional/Arabic_ar_ae.zip index d3e4b2de0541da0a314e5fa495b23b45b3d0a119..15edbcea83e28736ba25a2471d4f3e84fc01f1cd 100644 Binary files a/packages/vtiger/optional/Arabic_ar_ae.zip and b/packages/vtiger/optional/Arabic_ar_ae.zip differ diff --git a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip index 2ae6d798fc4195ee34bddd309409595918e1e81e..47f14fa63ca103ccdee06f99724f9771ecc9a6c4 100644 Binary files a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip and b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip differ diff --git a/packages/vtiger/optional/BritishLanguagePack_br_br.zip b/packages/vtiger/optional/BritishLanguagePack_br_br.zip index a8e0800eecc00e7e6a9f61b98ab851e121fed5de..b9126c8f881774df40f737a573cf750e807cb570 100644 Binary files a/packages/vtiger/optional/BritishLanguagePack_br_br.zip and b/packages/vtiger/optional/BritishLanguagePack_br_br.zip differ diff --git a/packages/vtiger/optional/Deutsch.zip b/packages/vtiger/optional/Deutsch.zip index a3904bd4cc64f0239d99bab7378c22bf7242de1d..ef9e8608f499cbcce54200ee7708985324ea611c 100644 Binary files a/packages/vtiger/optional/Deutsch.zip and b/packages/vtiger/optional/Deutsch.zip differ diff --git a/packages/vtiger/optional/Dutch.zip b/packages/vtiger/optional/Dutch.zip index 2f9d6be7f922de4883be759c687325ad67cf7cd1..1bd0294e1e6fe4465ac63c44661d792fc7584599 100644 Binary files a/packages/vtiger/optional/Dutch.zip and b/packages/vtiger/optional/Dutch.zip differ diff --git a/packages/vtiger/optional/EmailTemplates.zip b/packages/vtiger/optional/EmailTemplates.zip index ad957e64a0cb1c1ff6f391ae106446f740f8439c..0bee21439a0e6d55472be6e90e48ef464bc77a24 100644 Binary files a/packages/vtiger/optional/EmailTemplates.zip and b/packages/vtiger/optional/EmailTemplates.zip differ diff --git a/packages/vtiger/optional/French.zip b/packages/vtiger/optional/French.zip index 1ebbd10616c0764ce7e63ca44c4a713658f29b1b..19837c9be08f0bc75727466e149d282ad7de47c0 100644 Binary files a/packages/vtiger/optional/French.zip and b/packages/vtiger/optional/French.zip differ diff --git a/packages/vtiger/optional/Hungarian.zip b/packages/vtiger/optional/Hungarian.zip index 5b5fbbf8eab6b2af11d1d7f2777dbb65f26db630..12786b6fd74431b34cb4361fe5d0a5d45c52d04e 100644 Binary files a/packages/vtiger/optional/Hungarian.zip and b/packages/vtiger/optional/Hungarian.zip differ diff --git a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip index 427358969d32c2097576923d43bb631444388d73..950da3ae2263d782a10a8075a52d2ae517534a67 100644 Binary files a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip and b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip differ diff --git a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip index 1a0fc61dd0ac912603d861ecab2e0d1014fbfcb8..55ae70b422d95006cce2017c3227d4b1f979bd7a 100644 Binary files a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip and b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip differ diff --git a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip index 7f299f6d188a25ad214367906b9f2713a5bc8ec9..b41c0d1d14fa21937d1d2124933669209c9123c9 100644 Binary files a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip and b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip differ diff --git a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip index 659298c5261042a4eb14f59c9954e1fcdab830b6..252f82ac9551d2779fcad3a4edb50c050ec43771 100644 Binary files a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip and b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip differ diff --git a/packages/vtiger/optional/Russian.zip b/packages/vtiger/optional/Russian.zip index f0e4234a8ad6978012ce9677a70389cad03a8063..c8578dd2c68b1ef3ceb7b3597003991d0f46edfb 100644 Binary files a/packages/vtiger/optional/Russian.zip and b/packages/vtiger/optional/Russian.zip differ diff --git a/packages/vtiger/optional/Spanish.zip b/packages/vtiger/optional/Spanish.zip index a76c8bd3a5495754d2214ca5ea636a45897d0c00..71f2fd9c92068f07a5d3f7195910b6cad17651fb 100644 Binary files a/packages/vtiger/optional/Spanish.zip and b/packages/vtiger/optional/Spanish.zip differ diff --git a/packages/vtiger/optional/Sweden_sv_se.zip b/packages/vtiger/optional/Sweden_sv_se.zip index 7c23bbbf577ca5a61248b367697eaf17a3d9d901..e00b591910f8d9e879faf9b4445a138bdc1d4bee 100644 Binary files a/packages/vtiger/optional/Sweden_sv_se.zip and b/packages/vtiger/optional/Sweden_sv_se.zip differ diff --git a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip index c1d1f3e2ee9022488031a63e5359bd6af299d61d..7ca481033386f392bfab83918b7ebfef65b053b1 100644 Binary files a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip and b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip differ diff --git a/packages/vtiger/optional/Webforms.zip b/packages/vtiger/optional/Webforms.zip index 1dcfae20be63ad8376af5ce2c4a9e25195f90d9d..94d6b2532695916a7c86aa694ddf3332c31d01d5 100644 Binary files a/packages/vtiger/optional/Webforms.zip and b/packages/vtiger/optional/Webforms.zip differ diff --git a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/actions/Save.php b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/actions/Save.php index 4085157c5fee95a499e261ae6182a30ec360e5f8..e208d1b96ac802f9396b03fadbe16c41ad52af7a 100644 --- a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/actions/Save.php +++ b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/actions/Save.php @@ -55,8 +55,8 @@ class EmailTemplates_Save_Action extends Vtiger_Save_Action { } else { $loadUrl = $recordModel->getDetailViewUrl(); } - header("Location: $loadUrl"); } + header("Location: $loadUrl"); } } diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl index 7a7e48fd22389404aff2b657d5c5c836adbc4373..dd1e90a4b36e7bff707f6b36a5088874eec9c08f 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl @@ -9,7 +9,7 @@ * ********************************************************************************/ -->*} -<div class="modal-dialog modelContainer"> +<div class="modal-dialog modelContainer modal-content"> {assign var=HEADER_TITLE value={vtranslate('SINGLE_'|cat:$MODULE, $QUALIFIED_MODULE)}|cat:" - "|cat:{$RECORD_MODEL->get('name')}} {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php index 8c04eaa102c4eefe337ec8e917ea5d4040e9dbcd..7a0f7080938608489423b2c2425089ee62717ce2 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php @@ -199,6 +199,18 @@ $languageStrings = array( 'LBL_OR' => 'او', 'LBL_NONE' => 'لاشئ', 'LBL_APPROVE' => 'مواÙÙ‚ عليه', + 'LBL_HAS_CHANGED' => 'تغير', + 'LBL_HAS_CHANGED_TO' => 'تغيرت Ù„', + 'LBL_HAS_CHANGED_FROM' => 'قد تغير من', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'اقل او يساوي', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'أكبر من أو يساوي', + 'LBL_IS_NOT' => 'ليس', + 'LBL_IS_ADDED' => 'يضاÙ', + 'LBL_IS_TODAY' => 'اليوم', + 'LBL_IS_TOMORROW' => 'غدا', + 'LBL_IS_YESTERDAY' => 'هو أمس', + 'LBL_LESS_THAN_DAYS_LATER' => 'بعد أقل من يوم', + 'LBL_MORE_THAN_DAYS_LATER' => 'بعد مرور أكثر من أيام', 'LBL_DENY' => 'مرÙوض', 'LBL_EQUALS' => 'يساوي', 'LBL_NOT_EQUAL_TO' => 'لا يساوي', diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php index 30d1b07a2f052c72d22857f5047513938cb0b152..4690eb69636f88a0da6273670427ad7ff9a25080 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'ou' , 'LBL_NONE' => '--Nada--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'mudou', + 'LBL_HAS_CHANGED_TO' => 'mudou para', + 'LBL_HAS_CHANGED_FROM' => 'foi alterado de', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'menos que ou igual a', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'maior do que ou igual a', + 'LBL_IS_NOT' => 'não é', + 'LBL_IS_ADDED' => 'Está adicionado', + 'LBL_IS_TODAY' => 'é hoje', + 'LBL_IS_TOMORROW' => 'é amanhã', + 'LBL_IS_YESTERDAY' => 'é ontem', + 'LBL_LESS_THAN_DAYS_LATER' => 'menos dias depois', + 'LBL_MORE_THAN_DAYS_LATER' => 'mais do que dias depois', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php index fb4d8944d104bac4cffa1fc411d6d7db7ce4ea85..52c33fd77cb77b9ec3eb58cba7b231c05223aedc 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'or' , 'LBL_NONE' => '--None--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'has changed', + 'LBL_HAS_CHANGED_TO' => 'has changed to', + 'LBL_HAS_CHANGED_FROM' => 'has changed from', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'less than or equal to', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'greater than or equal to', + 'LBL_IS_NOT' => 'is not', + 'LBL_IS_ADDED' => 'is added', + 'LBL_IS_TODAY' => 'is today', + 'LBL_IS_TOMORROW' => 'is tomorrow', + 'LBL_IS_YESTERDAY' => 'is yesterday', + 'LBL_LESS_THAN_DAYS_LATER' => 'less than days later', + 'LBL_MORE_THAN_DAYS_LATER' => 'more than days later', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/Deutsch/modules/Vtiger.php b/pkg/vtiger/translations/Deutsch/modules/Vtiger.php index 3a63240e39d23e6acc1d26cea23cd1077fb64ebc..c4b372838ae1ca80f89685187a01e3216ebc7476 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Vtiger.php +++ b/pkg/vtiger/translations/Deutsch/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'oder' , 'LBL_NONE' => '--keine--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'hat sich verändert', + 'LBL_HAS_CHANGED_TO' => 'hat sich geändert', + 'LBL_HAS_CHANGED_FROM' => 'hat sich geändert von', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'Gleich oder kleiner als', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'größer als oder gleich wie', + 'LBL_IS_NOT' => 'ist nicht', + 'LBL_IS_ADDED' => 'hinzugefügt', + 'LBL_IS_TODAY' => 'ist heute', + 'LBL_IS_TOMORROW' => 'ist morgen', + 'LBL_IS_YESTERDAY' => 'gestern ist', + 'LBL_LESS_THAN_DAYS_LATER' => 'weniger als Tage später', + 'LBL_MORE_THAN_DAYS_LATER' => 'mehr als Tage später', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/Dutch/modules/Vtiger.php b/pkg/vtiger/translations/Dutch/modules/Vtiger.php index 376fe42c311cefb1058149698766727c5ac7e8a0..036f6ccdb31ebefda3b8c527f0278dd4fe2fb128 100644 --- a/pkg/vtiger/translations/Dutch/modules/Vtiger.php +++ b/pkg/vtiger/translations/Dutch/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'of' , 'LBL_NONE' => '--Geen--' , 'LBL_APPROVE' => 'Goedkeuren' , + 'LBL_HAS_CHANGED' => 'is veranderd', + 'LBL_HAS_CHANGED_TO' => 'is veranderd in', + 'LBL_HAS_CHANGED_FROM' => 'is veranderd van', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'minder dan of gelijk aan', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'groter dan of gelijk aan', + 'LBL_IS_NOT' => 'is niet', + 'LBL_IS_ADDED' => 'is toegevoegd', + 'LBL_IS_TODAY' => 'is vandaag', + 'LBL_IS_TOMORROW' => 'is morgen', + 'LBL_IS_YESTERDAY' => 'is gisteren', + 'LBL_LESS_THAN_DAYS_LATER' => 'minder dan dagen later', + 'LBL_MORE_THAN_DAYS_LATER' => 'meer dan dagen later', 'LBL_DENY' => 'Afkeuren' , 'LBL_EQUALS' => 'gelijk aan' , 'LBL_NOT_EQUAL_TO' => 'niet gelijk aan' , diff --git a/pkg/vtiger/translations/French/modules/Vtiger.php b/pkg/vtiger/translations/French/modules/Vtiger.php index 163d9ca8f1a39d9a14db867df23ea9807509fcdb..c8e70fa0d2938df633da437854a7bfc95da2469e 100644 --- a/pkg/vtiger/translations/French/modules/Vtiger.php +++ b/pkg/vtiger/translations/French/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'Ou' , 'LBL_NONE' => '--Aucun--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'a changé', + 'LBL_HAS_CHANGED_TO' => 'a changé', + 'LBL_HAS_CHANGED_FROM' => 'a changé de', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'inférieur ou égal à ', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'Plus grand ou égal à ', + 'LBL_IS_NOT' => "n'est pas", + 'LBL_IS_ADDED' => 'est ajouté', + 'LBL_IS_TODAY' => "c'est aujourd'hui", + 'LBL_IS_TOMORROW' => "c'est demain", + 'LBL_IS_YESTERDAY' => 'est hier', + 'LBL_LESS_THAN_DAYS_LATER' => 'moins de jours plus tard', + 'LBL_MORE_THAN_DAYS_LATER' => 'plus de jours plus tard', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/Hungarian/modules/Vtiger.php b/pkg/vtiger/translations/Hungarian/modules/Vtiger.php index a6a2b7d53f044df24ef63efa38a493f078e4b8ad..1dbc08324d1be901aab5af5a64efcafc5a370db8 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Vtiger.php +++ b/pkg/vtiger/translations/Hungarian/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'vagy' , 'LBL_NONE' => '--Semmi--' , 'LBL_APPROVE' => 'Jóváhagy' , + 'LBL_HAS_CHANGED' => 'megváltozott', + 'LBL_HAS_CHANGED_TO' => 'változott', + 'LBL_HAS_CHANGED_FROM' => 'változott', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'kevesebb vagy egyenlÅ‘, mint', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'nagyobb vagy egyenlÅ‘, mint', + 'LBL_IS_NOT' => 'nem', + 'LBL_IS_ADDED' => 'hozzáadva', + 'LBL_IS_TODAY' => 'ma van', + 'LBL_IS_TOMORROW' => 'holnap lesz', + 'LBL_IS_YESTERDAY' => 'a tegnapi', + 'LBL_LESS_THAN_DAYS_LATER' => 'kevesebb, mint nappal késÅ‘bb', + 'LBL_MORE_THAN_DAYS_LATER' => 'Több mint nappal késÅ‘bb', 'LBL_DENY' => 'Megtagad' , 'LBL_EQUALS' => 'egyenlÅ‘ ezzel' , 'LBL_NOT_EQUAL_TO' => 'nem egyenlÅ‘ ezzel' , diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php index 4e32b74b8bd8aa69e67a91931219fc305992c511..57d578e18aec8a2ddd6e21ddf4d7f0267e8aaa47 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'o' , 'LBL_NONE' => '--Nessuno--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'è cambiato', + 'LBL_HAS_CHANGED_TO' => 'è cambiato a', + 'LBL_HAS_CHANGED_FROM' => 'sono variate rispetto', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'minore o uguale a', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'maggiore o uguale a', + 'LBL_IS_NOT' => 'non è', + 'LBL_IS_ADDED' => 'è aggiunto', + 'LBL_IS_TODAY' => 'è oggi', + 'LBL_IS_TOMORROW' => 'è domani', + 'LBL_IS_YESTERDAY' => 'è di ieri', + 'LBL_LESS_THAN_DAYS_LATER' => 'meno di giorni più tardi', + 'LBL_MORE_THAN_DAYS_LATER' => 'più di giorni più tardi', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php index 6b37679eeae77232e0f4e1e9bb5df37c4bb78b5d..f55c2e13ec931b2e9a42f808856e0addf4fe3617 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php @@ -162,6 +162,18 @@ $languageStrings = array( 'LBL_OR' => 'o' , 'LBL_NONE' => '-Ninguno-' , 'LBL_APPROVE' => 'Aprobar' , + 'LBL_HAS_CHANGED' => 'ha cambiado', + 'LBL_HAS_CHANGED_TO' => 'ha cambiado a', + 'LBL_HAS_CHANGED_FROM' => 'ha cambiado desde', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'Menos que o igual a', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'Mayor qué o igual a', + 'LBL_IS_NOT' => 'no es', + 'LBL_IS_ADDED' => 'está agregado', + 'LBL_IS_TODAY' => 'es hoy', + 'LBL_IS_TOMORROW' => 'Es mañana', + 'LBL_IS_YESTERDAY' => 'es ayer', + 'LBL_LESS_THAN_DAYS_LATER' => 'menos de dÃas más tarde', + 'LBL_MORE_THAN_DAYS_LATER' => 'más de dÃas más tarde', 'LBL_DENY' => 'Denegar' , 'LBL_EQUALS' => 'Igual a ' , 'LBL_NOT_EQUAL_TO' => 'No igual a' , diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php index 991b8c9d5d4424d6e0b9e755bc57b7c3fcff715c..c8d020dcfa4194f2938e53891fce15c1176fb34c 100644 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php @@ -174,6 +174,18 @@ $languageStrings = array( 'LBL_OR' => 'lub', 'LBL_NONE' => 'żaden', 'LBL_APPROVE' => 'zaakceptowany', + 'LBL_HAS_CHANGED' => 'zmieniÅ‚ siÄ™', + 'LBL_HAS_CHANGED_TO' => 'zmieniÅ‚ siÄ™', + 'LBL_HAS_CHANGED_FROM' => 'zmieniÅ‚a siÄ™ od', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'mniejszy lub równy', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'wiÄ™ksze bÄ…dź równe', + 'LBL_IS_NOT' => 'nie jest', + 'LBL_IS_ADDED' => 'jest dodany', + 'LBL_IS_TODAY' => 'jest dzisiaj', + 'LBL_IS_TOMORROW' => 'jutro', + 'LBL_IS_YESTERDAY' => 'to wczoraj', + 'LBL_LESS_THAN_DAYS_LATER' => 'mniej niż dzieÅ„ później', + 'LBL_MORE_THAN_DAYS_LATER' => 'wiÄ™cej niż dzieÅ„ później', 'LBL_DENY' => 'zabroniony', 'LBL_EQUALS' => 'taniej', 'LBL_NOT_EQUAL_TO' => 'niewystarczajÄ…co', diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php index 28bff024cd99fbff44fb674c1864df3dfd56a806..cf494780b514b89e3435df600581876614d9af02 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'sau' , 'LBL_NONE' => '--Nimic--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 's-a schimbat', + 'LBL_HAS_CHANGED_TO' => 'sa schimbat la', + 'LBL_HAS_CHANGED_FROM' => 'sa schimbat de la', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'mai mică sau egală cu', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'mai mare sau egal cu', + 'LBL_IS_NOT' => 'nu este', + 'LBL_IS_ADDED' => 'e adăugat', + 'LBL_IS_TODAY' => 'este azi', + 'LBL_IS_TOMORROW' => 'este mâine', + 'LBL_IS_YESTERDAY' => 'este ieri', + 'LBL_LESS_THAN_DAYS_LATER' => 'mai puÈ›in de zile mai târziu', + 'LBL_MORE_THAN_DAYS_LATER' => 'mai mult de zile mai târziu', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' , diff --git a/pkg/vtiger/translations/Russian/modules/Vtiger.php b/pkg/vtiger/translations/Russian/modules/Vtiger.php index 075b88c74c8bd9a5e24ac60f10c2a7935f7bff0d..0ecd87e86cd57ab8574a7ccacf5b48151625188a 100644 --- a/pkg/vtiger/translations/Russian/modules/Vtiger.php +++ b/pkg/vtiger/translations/Russian/modules/Vtiger.php @@ -162,6 +162,18 @@ $languageStrings = array( 'LBL_OR' => 'или' , 'LBL_NONE' => '--нет--' , 'LBL_APPROVE' => 'Утвердить' , + 'LBL_HAS_CHANGED' => 'изменилÑÑ', + 'LBL_HAS_CHANGED_TO' => 'изменилоÑÑŒ в', + 'LBL_HAS_CHANGED_FROM' => 'изменилÑÑ Ñ', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'меньше или равно', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'больше или равно', + 'LBL_IS_NOT' => 'не ÑвлÑетÑÑ', + 'LBL_IS_ADDED' => 'добавлен', + 'LBL_IS_TODAY' => 'ÑегоднÑ', + 'LBL_IS_TOMORROW' => 'завтра', + 'LBL_IS_YESTERDAY' => 'Ñто вчера', + 'LBL_LESS_THAN_DAYS_LATER' => 'менее дней', + 'LBL_MORE_THAN_DAYS_LATER' => 'более дней', 'LBL_DENY' => 'Отрицать' , 'LBL_EQUALS' => 'равна' , 'LBL_NOT_EQUAL_TO' => 'не равно' , diff --git a/pkg/vtiger/translations/Spanish/modules/Vtiger.php b/pkg/vtiger/translations/Spanish/modules/Vtiger.php index ab33f29ffed70b324900eeaf29f645d21bc89272..391c885755d1504e55d85f1d276ba9352b1663f6 100644 --- a/pkg/vtiger/translations/Spanish/modules/Vtiger.php +++ b/pkg/vtiger/translations/Spanish/modules/Vtiger.php @@ -150,6 +150,18 @@ $languageStrings = array( 'LBL_OR' => 'o', 'LBL_NONE' => 'NINGUNO', 'LBL_APPROVE' => 'Permitir', + 'LBL_HAS_CHANGED' => 'ha cambiado', + 'LBL_HAS_CHANGED_TO' => 'ha cambiado a', + 'LBL_HAS_CHANGED_FROM' => 'ha cambiado desde', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'Menos que o igual a', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'Mayor qué o igual a', + 'LBL_IS_NOT' => 'no es', + 'LBL_IS_ADDED' => 'está agregado', + 'LBL_IS_TODAY' => 'es hoy', + 'LBL_IS_TOMORROW' => 'Es mañana', + 'LBL_IS_YESTERDAY' => 'es ayer', + 'LBL_LESS_THAN_DAYS_LATER' => 'menos de dÃas más tarde', + 'LBL_MORE_THAN_DAYS_LATER' => 'más de dÃas más tarde', 'LBL_DENY' => 'Denegar', 'LBL_EQUALS' => 'igual', 'LBL_NOT_EQUAL_TO' => 'distinto', diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php index 449ca44cdfaef618c263a645200d7c0fccd50366..0fe0435b0c1ef802e2ba4d78409ff3603c42e2cd 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php @@ -199,6 +199,18 @@ $languageStrings = array( 'LBL_OR' => 'eller', 'LBL_NONE' => 'INGEN', 'LBL_APPROVE' => 'Godkänd', + 'LBL_HAS_CHANGED' => 'har förändrats', + 'LBL_HAS_CHANGED_TO' => 'har ändrats till', + 'LBL_HAS_CHANGED_FROM' => 'har ändrats frÃ¥n', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'mindre än eller lika med', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'större än eller lika med', + 'LBL_IS_NOT' => 'är inte', + 'LBL_IS_ADDED' => 'är adderat', + 'LBL_IS_TODAY' => 'är idag', + 'LBL_IS_TOMORROW' => 'är i morgon', + 'LBL_IS_YESTERDAY' => 'är igÃ¥r', + 'LBL_LESS_THAN_DAYS_LATER' => 'mindre än dagar senare', + 'LBL_MORE_THAN_DAYS_LATER' => 'mer än dagar senare', 'LBL_DENY' => 'Neka', 'LBL_EQUALS' => 'är lika med', 'LBL_NOT_EQUAL_TO' => 'är inte lika med', diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php index 82b9ab1c5d45668b84d095bcdb88e93d5c57be13..8906fe12b3044f4f13964d43df401df29d0ac459 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php @@ -161,6 +161,18 @@ $languageStrings = array( 'LBL_OR' => 'veya' , 'LBL_NONE' => '--Yok--' , 'LBL_APPROVE' => 'Approve' , + 'LBL_HAS_CHANGED' => 'deÄŸiÅŸti', + 'LBL_HAS_CHANGED_TO' => 'deÄŸiÅŸti', + 'LBL_HAS_CHANGED_FROM' => 'deÄŸiÅŸtiÄŸini', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'daha az ya da eÅŸit', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'daha büyük ya da eÅŸit', + 'LBL_IS_NOT' => 'deÄŸil', + 'LBL_IS_ADDED' => 'eklendi', + 'LBL_IS_TODAY' => 'bugün', + 'LBL_IS_TOMORROW' => 'yarın', + 'LBL_IS_YESTERDAY' => 'dün', + 'LBL_LESS_THAN_DAYS_LATER' => 'az gün sonra', + 'LBL_MORE_THAN_DAYS_LATER' => 'Birden fazla gün sonra', 'LBL_DENY' => 'Deny' , 'LBL_EQUALS' => 'equals' , 'LBL_NOT_EQUAL_TO' => 'not equal to' ,