nextcloud.com/page-providers.php

146 строки
5.2 KiB
PHP
Исходник Обычный вид История

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-06-19 12:59:28 +03:00
var filterHosting = 'both';
/**
* 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;
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>