2016-06-19 12:59:28 +03:00
< div class = " row " >
< div class = " col-md-4 " >
Country : < select id = " countryPicker " class = " form-control " >
< option value = " all " > World </ option >
</ select >
</ div >
< div class = " col-md-7 col-md-offset-1 " >
2016-11-06 22:37:59 +03:00
< input type = " checkbox " id = " FreePlans " > < ? php
echo $l -> t ( 'Show only free plans' ); ?> <br>
2016-06-19 13:00:40 +03:00
<!-- < input type = " checkbox " id = " certified " > Show only Certified Partners < br > -->
2016-11-06 22:37:59 +03:00
< input type = " radio " id = " hostingboth " name = " hosting " value = " both " checked > < ? php
echo $l -> t ( 'Both' ); ?> <br>
< input type = " radio " id = " hostingconsumer " name = " hosting " value = " consumer " > < ? php
echo $l -> t ( 'Consumers' ); ?> <br>
< input type = " radio " id = " hostingorganization " name = " hosting " value = " organization " > < ? php
echo $l -> t ( 'Organization' ); ?> <br>
2016-06-19 12:59:28 +03:00
</ div >
2016-06-03 22:52:31 +03:00
</ div >
2016-06-19 12:59:28 +03:00
< div id = " providers " class = " row " >
</ div >
2016-11-06 22:37:59 +03:00
< div class = " alert alert-info " >< ? php
echo $l -> t ( 'If you offer Nextcloud Server account hosting, you can be <a href="/providers/apply">listed on this page</a>. If you want to report an abuse by one of the providers listed above, you can send us an email to abuse@nextcloud.com.' ); ?> </div>
2016-06-03 22:52:31 +03:00
2016-06-19 12:59:28 +03:00
< script type = " text/javascript " >
2016-06-19 13:00:40 +03:00
// $( "#hostingboth" ).prop( "checked", true );
2016-06-19 12:59:28 +03:00
$ ( document ) . ready ( function () {
var items = [];
var countries = [];
var selectedCountryCode = 'all' ;
var filterFreePlans = false ;
2016-08-08 12:55:44 +03:00
2016-06-19 12:59:28 +03:00
var filterHosting = 'both' ;
2016-08-08 12:55:44 +03:00
/**
* Based on the Apache licensed https :// github . com / coolaj86 / knuth - shuffle
*/
function shuffle ( array ) {
var currentIndex = array . length , temporaryValue , randomIndex ;
// While there remain elements to shuffle...
while ( 0 !== currentIndex ) {
// Pick a remaining element...
randomIndex = Math . floor ( Math . random () * currentIndex );
currentIndex -= 1 ;
// And swap it with the current element.
temporaryValue = array [ currentIndex ];
array [ currentIndex ] = array [ randomIndex ];
array [ randomIndex ] = temporaryValue ;
}
return array ;
}
2016-06-19 13:00:40 +03:00
function filterItems ( country , plan , hosting ) {
2016-06-19 12:59:28 +03:00
var filteredItems = [];
$ . each ( items , function ( key , provider ) {
// Filter for the country
if ( typeof country !== 'undefined' && country !== 'all' ) {
var hasCountryFlag = false ;
$ . each ( provider . flags , function ( key , value ) {
if ( value === country ) {
hasCountryFlag = true ;
}
});
if ( ! hasCountryFlag ) {
return true ;
}
}
// Filter for free plans
2016-06-19 13:00:40 +03:00
if ( plan ) {
2016-06-19 12:59:28 +03:00
if ( provider . freeplans !== true ) {
return true ;
}
}
// Filter for who this is perfect for
2016-06-19 14:40:14 +03:00
if ( hosting !== 'both' ) {
if ( provider . supports !== 'both' ) {
if ( provider . supports !== hosting ) {
return true ;
}
2016-06-19 12:59:28 +03:00
}
2016-06-03 22:52:31 +03:00
}
2016-06-19 12:59:28 +03:00
// Iterate and template all the remaining ones. Yay.
filteredItems . push ( '<div class="col-xs-12 col-sm-6 col-md-4">' );
2016-06-19 14:40:14 +03:00
filteredItems . push ( '<div class="provider prov-thumbnail"> ' );
2016-06-19 12:59:28 +03:00
filteredItems . push ( '<div class="bannerhead">' )
filteredItems . push ( '<a href="' );
2016-06-19 14:40:14 +03:00
filteredItems . push ( provider . url );
2016-08-13 19:25:30 +03:00
filteredItems . push ( '" target="_blank" title="' );
2016-06-19 14:40:14 +03:00
filteredItems . push ( provider . title );
filteredItems . push ( '"><img class="provider-logo" src="<?php echo get_template_directory_uri() ?>/assets/img/providers/' );
filteredItems . push ( provider . imagename );
filteredItems . push ( '"></a><br \>' );
2016-06-19 12:59:28 +03:00
filteredItems . push ( provider . title );
$ . each ( provider . flags , function ( key , value ) {
filteredItems . push ( '<img class="flag" src="<?php echo get_template_directory_uri() ?>/assets/img/flags/' + value + '.gif">' );
// Add country to country array if it does not exists.
if ( $ . inArray ( value , countries ) == - 1 ) {
countries . push ( value );
}
});
filteredItems . push ( '<br \></div>' );
filteredItems . push ( '<div class="bannerfoot">' );
filteredItems . push ( '<p>' );
filteredItems . push ( provider . specializes );
filteredItems . push ( '</p>' );
filteredItems . push ( " </div> " );
filteredItems . push ( " </div> " );
filteredItems . push ( " </div> " );
filteredItems . push ( " </div> " );
// filteredItems.push("</div>");
});
$ ( '#providers' ) . empty ();
$ ( " <div/> " , {
html : filteredItems . join ( " " )
}) . appendTo ( '#providers' );
2016-06-03 22:52:31 +03:00
}
2016-06-19 12:59:28 +03:00
$ . getJSON ( '<?php echo get_template_directory_uri() ?>/assets/providers.json' , function ( data ) {
items = data ;
2016-08-08 12:55:44 +03:00
shuffle ( items );
2016-06-19 13:00:40 +03:00
filterItems ( selectedCountryCode , filterFreePlans , filterHosting );
2016-06-19 12:59:28 +03:00
$ . each ( countries , function ( key , countryCode ) {
$ ( '#countryPicker' ) . append ( $ ( '<option/>' , {
value : countryCode ,
html : countryCode
}));
});
});
$ ( '#countryPicker' ) . change ( function () {
selectedCountryCode = $ ( this ) . find ( " option:selected " ) . attr ( 'value' );
2016-06-19 13:00:40 +03:00
filterItems ( selectedCountryCode , filterFreePlans , filterHosting );
2016-06-19 12:59:28 +03:00
});
$ ( '#FreePlans' ) . change ( function () {
filterFreePlans = $ ( '#FreePlans' ) . is ( ':checked' );
2016-06-19 13:00:40 +03:00
filterItems ( selectedCountryCode , filterFreePlans , filterHosting );
2016-06-19 12:59:28 +03:00
});
2016-06-19 13:00:40 +03:00
// $('#certified').change(function () {
// filterOnlyCertified = $('#certified').is(':checked');
// filterItems(selectedCountryCode, filterFreePlans, filterOnlyCertified, filterHosting);
// });
$ ( " input[name='hosting'] " ) . change ( function () {
filterHosting = $ ( this ) . val ();
filterItems ( selectedCountryCode , filterFreePlans , filterHosting );
2016-06-19 12:59:28 +03:00
});
})
</ script >