@@ -37,7 +37,6 @@ SitemapController.prototype = {
3737 'SitemapList' ,
3838 'SitemapListItem' ,
3939 'SitemapCreate' ,
40- 'SitemapStartUrlField' ,
4140 'SitemapImport' ,
4241 'SitemapExport' ,
4342 'SitemapBrowseData' ,
@@ -197,13 +196,7 @@ SitemapController.prototype = {
197196 } ,
198197 "#edit-selector button[action=preview-selector-data]" : {
199198 click : this . previewSelectorDataFromSelectorEditing
200- } ,
201- "button.add-extra-start-url" : {
202- click : this . addStartUrl
203- } ,
204- "button.remove-start-url" : {
205- click : this . removeStartUrl
206- }
199+ }
207200 } ) ;
208201 this . showSitemaps ( ) ;
209202 } . bind ( this ) ) ;
@@ -247,22 +240,6 @@ SitemapController.prototype = {
247240 }
248241 } ,
249242
250- /**
251- * Simple info popup for sitemap start url input field
252- */
253- initMultipleStartUrlHelper : function ( ) {
254- $ ( "#startUrl" )
255- . popover ( {
256- title : 'Multiple start urls' ,
257- html : true ,
258- content : "You can create ranged start urls like this:<br />http://example.com/[1-100].html" ,
259- placement : 'bottom'
260- } )
261- . blur ( function ( ) {
262- $ ( this ) . popover ( 'hide' ) ;
263- } ) ;
264- } ,
265-
266243 /**
267244 * Returns bootstrapValidator object for current form in viewport
268245 */
@@ -318,14 +295,23 @@ SitemapController.prototype = {
318295 }
319296 }
320297 } ,
321- "startUrl[] " : {
298+ "startUrls " : {
322299 validators : {
323300 notEmpty : {
324301 message : 'The start URL is required and cannot be empty'
325302 } ,
326- uri : {
327- allowLocal : true ,
328- message : 'The start URL is not a valid URL'
303+ callback : {
304+ message : 'The start URLs are not valid. Please use "," as a seperator.' ,
305+ callback : function ( value , validator ) {
306+ function isUrlValid ( url ) {
307+ return / ^ ( h t t p s ? | s ? f t p ) : \/ \/ ( ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : ) * @ ) ? ( ( ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) ) | ( ( ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) * ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ) ) \. ) + ( ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) * ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ) ) \. ? ) ( : \d * ) ? ) ( \/ ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) + ( \/ ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) * ) * ) ? ) ? ( \? ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) | [ \uE000 - \uF8FF ] | \/ | \? ) * ) ? ( # ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) | \/ | \? ) * ) ? $ / i. test ( url ) ;
308+ }
309+ var isValid = true ;
310+ value . split ( ',' ) . map ( ( item ) => item . trim ( ) ) . each ( function ( url ) {
311+ isValid = isUrlValid ( url ) ? isValid : false ;
312+ } ) ;
313+ return isValid ;
314+ }
329315 }
330316 }
331317 }
@@ -337,7 +323,6 @@ SitemapController.prototype = {
337323 this . setActiveNavigationButton ( 'create-sitemap-create' ) ;
338324 var sitemapForm = ich . SitemapCreate ( ) ;
339325 $ ( "#viewport" ) . html ( sitemapForm ) ;
340- this . initMultipleStartUrlHelper ( ) ;
341326 this . initSitemapValidation ( ) ;
342327
343328 return true ;
@@ -426,20 +411,11 @@ SitemapController.prototype = {
426411
427412 var id = $ ( "#viewport form input[name=_id]" ) . val ( ) ;
428413 var $startUrlInputs = $ ( "#viewport form .input-start-url" ) ;
429- var startUrl ;
430- if ( $startUrlInputs . length === 1 ) {
431- startUrl = $startUrlInputs . val ( ) ;
432- }
433- else {
434- startUrl = [ ] ;
435- $startUrlInputs . each ( function ( i , element ) {
436- startUrl . push ( $ ( element ) . val ( ) ) ;
437- } ) ;
438- }
414+ var startUrls = $startUrlInputs . val ( ) . split ( ',' ) . map ( ( item ) => item . trim ( ) ) ;
439415
440416 return {
441417 id :id ,
442- startUrl : startUrl
418+ startUrls : startUrls
443419 } ;
444420 } ,
445421
@@ -461,7 +437,7 @@ SitemapController.prototype = {
461437 else {
462438 var sitemap = new Sitemap ( {
463439 _id : sitemapData . id ,
464- startUrl : sitemapData . startUrl ,
440+ startUrls : sitemapData . startUrls ,
465441 selectors : [ ]
466442 } ) ;
467443 this . store . createSitemap ( sitemap , function ( sitemap ) {
@@ -508,7 +484,6 @@ SitemapController.prototype = {
508484 var sitemap = this . state . currentSitemap ;
509485 var $sitemapMetadataForm = ich . SitemapEditMetadata ( sitemap ) ;
510486 $ ( "#viewport" ) . html ( $sitemapMetadataForm ) ;
511- this . initMultipleStartUrlHelper ( ) ;
512487 this . initSitemapValidation ( ) ;
513488
514489 return true ;
@@ -532,7 +507,7 @@ SitemapController.prototype = {
532507 }
533508
534509 // change data
535- sitemap . startUrl = sitemapData . startUrl ;
510+ sitemap . startUrls = sitemapData . startUrls ;
536511
537512 // just change sitemaps url
538513 if ( sitemapData . id === sitemap . _id ) {
@@ -1487,32 +1462,5 @@ SitemapController.prototype = {
14871462 $ ( this ) . remove ( ) ;
14881463 } ) ;
14891464 } ) ;
1490- } ,
1491- /**
1492- * Add start url to sitemap creation or editing form
1493- * @param button
1494- */
1495- addStartUrl : function ( button ) {
1496-
1497- var $startUrlInputField = ich . SitemapStartUrlField ( ) ;
1498- $ ( "#viewport .start-url-block:last" ) . after ( $startUrlInputField ) ;
1499- var validator = this . getFormValidator ( ) ;
1500- validator . addField ( $startUrlInputField . find ( "input" ) ) ;
1501- } ,
1502- /**
1503- * Remove start url from sitemap creation or editing form.
1504- * @param button
1505- */
1506- removeStartUrl : function ( button ) {
1507-
1508- var $block = $ ( button ) . closest ( ".start-url-block" ) ;
1509- if ( $ ( "#viewport .start-url-block" ) . length > 1 ) {
1510-
1511- // remove from validator
1512- var validator = this . getFormValidator ( ) ;
1513- validator . removeField ( $block . find ( "input" ) ) ;
1514-
1515- $block . remove ( ) ;
1516- }
15171465 }
15181466} ;
0 commit comments