Merge branch 'master' of git://github.com/friendica/friendica
This commit is contained in:
commit
10db2f00f9
80 changed files with 8705 additions and 1220 deletions
|
@ -105,3 +105,17 @@ blockquote {
|
|||
input#acl-search {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.notify-seen {
|
||||
background:#666;
|
||||
}
|
||||
|
||||
#nav-notifications-menu {
|
||||
background: #2e2e2f;
|
||||
}
|
||||
|
||||
#nav-notifications-menu li:hover {
|
||||
background: #444;
|
||||
}
|
|
@ -49,6 +49,9 @@
|
|||
{{ inc field_input.tpl with $field=$proxy }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$timeout }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$delivery_interval }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$poll_interval }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$maxloadavg }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }}
|
||||
|
||||
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>
|
||||
|
|
|
@ -31,6 +31,7 @@ $(document).ready(function() {
|
|||
for (var Sitem=0, m = SavedID.length; Sitem < m; Sitem++) {
|
||||
$("#sortable_boxes").append($("#sortable_boxes").children("#" + SavedID[Sitem]));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function tautogrow(id){
|
||||
|
@ -66,12 +67,14 @@ $(document).ready(function() {
|
|||
$("a#top").attr("id","down");
|
||||
$("a#down").attr("onclick","scrolldown()");
|
||||
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_bottom.png");
|
||||
$("img#scroll_top_bottom").attr("title","Scroll to bottom");
|
||||
}
|
||||
|
||||
if (scrollInfo > "900"){
|
||||
$("a#down").attr("id","top");
|
||||
$("a#top").attr("onclick","scrolltop()");
|
||||
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_top.png");
|
||||
$("img#scroll_top_bottom").attr("title","Back to top");
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -1,3 +1,57 @@
|
|||
|
||||
<div id="twittersettings" style="display:none">
|
||||
<form id="twittersettingsform" action="network" method="post" >
|
||||
{{inc field_input.tpl with $field=$TSearchTerm}}{{endinc}}
|
||||
<div class="settings-submit-wrapper">
|
||||
<input id="twittersub" type="submit" value="$sub" class="settings-submit" name="diabook-settings-sub"></input>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="mapcontrol" style="display:none;">
|
||||
<form id="mapform" action="network" method="post" >
|
||||
<div id="layermanager" style="width: 350px;position: relative;float: right;right:20px;"></div>
|
||||
<div id="map2" style="height:350px;width:350px;"></div>
|
||||
<div id="mouseposition" style="width: 350px;"></div>
|
||||
{{inc field_input.tpl with $field=$ELZoom}}{{endinc}}
|
||||
{{inc field_input.tpl with $field=$ELPosX}}{{endinc}}
|
||||
{{inc field_input.tpl with $field=$ELPosY}}{{endinc}}
|
||||
<div class="settings-submit-wrapper">
|
||||
<input id="mapsub" type="submit" value="$sub" class="settings-submit" name="diabook-settings-map-sub"></input>
|
||||
</div>
|
||||
<span style="width: 500px;"><p>this ist still under development.
|
||||
the idea is to provide a map with different layers(e.g. earth population, atomic power plants, wheat growing acreages, sunrise or what you want)
|
||||
and markers(events, demos, friends, anything, that is intersting for you).
|
||||
These layer and markers should be importable and deletable by the user.</p>
|
||||
<p>help on this feature is very appreciated. i am not that good in js so it's a start, but needs tweaks and further dev.
|
||||
just contact me, if you are intesrested in joining</p>
|
||||
<p>https://toktan.org/profile/thomas</p>
|
||||
<p>this is build with <b>mapquery</b> http://mapquery.org/ and
|
||||
<b>openlayers</b>http://openlayers.org/</p>
|
||||
</span>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="boxsettings" style="display:none">
|
||||
<form id="boxsettingsform" action="network" method="post" >
|
||||
<fieldset><legend>$boxsettings.title.1</legend>
|
||||
{{inc field_select.tpl with $field=$close_pages}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_profiles}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_helpers}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_services}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_friends}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastusers}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastphotos}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastlikes}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_twitter}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_mapquery}}{{endinc}}
|
||||
<div class="settings-submit-wrapper">
|
||||
<input id="boxsub" type="submit" value="$sub" class="settings-submit" name="diabook-settings-box-sub"></input>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="pos_null" style="margin-bottom:-30px;">
|
||||
</div>
|
||||
|
||||
|
@ -7,11 +61,11 @@
|
|||
{{ if $page }}
|
||||
<div>$page</div>
|
||||
{{ endif }}
|
||||
|
||||
</div>
|
||||
|
||||
<div id="close_profiles">
|
||||
{{ if $comunity_profilest_title }}
|
||||
<h3>$comunity_profilest_title<a id="close_comunity_profiles_icon" onClick="close_profiles()" class="icon close_box" title="close"></a></h3>
|
||||
{{ if $comunity_profiles_title }}
|
||||
<h3>$comunity_profiles_title<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id='lastusers-wrapper' class='items-wrapper'>
|
||||
{{ for $comunity_profiles_items as $i }}
|
||||
$i
|
||||
|
@ -22,7 +76,8 @@
|
|||
|
||||
<div id="close_helpers">
|
||||
{{ if $helpers }}
|
||||
<h3>$helpers.title.1<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$helpers.title.1<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<a href="http://friendica.com/resources" title="How-to's" style="margin-left: 10px; " target="blank">How-To Guides</a><br>
|
||||
<a href="http://kakste.com/profile/newhere" title="@NewHere" style="margin-left: 10px; " target="blank">NewHere</a><br>
|
||||
<a href="https://helpers.pyxis.uberspace.de/profile/helpers" style="margin-left: 10px; " title="Friendica Support" target="blank">Friendica Support</a><br>
|
||||
<a href="https://letstalk.pyxis.uberspace.de/profile/letstalk" style="margin-left: 10px; " title="Let's talk" target="blank">Let's talk</a><br>
|
||||
|
@ -32,7 +87,7 @@
|
|||
|
||||
<div id="close_services">
|
||||
{{ if $con_services }}
|
||||
<h3>$con_services.title.1<a id="close_services_icon" onClick="close_services()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$con_services.title.1<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id="right_service_icons" style="margin-left: 16px; margin-top: 5px;">
|
||||
<a href="$url/facebook"><img alt="Facebook" src="view/theme/diabook/icons/facebook.png" title="Facebook"></a>
|
||||
<a href="$url/settings/connectors"><img alt="StatusNet" src="view/theme/diabook/icons/StatusNet.png?" title="StatusNet"></a>
|
||||
|
@ -48,7 +103,7 @@
|
|||
|
||||
<div id="close_friends" style="margin-bottom:53px;">
|
||||
{{ if $nv }}
|
||||
<h3>$nv.title.1<a id="close_friends_icon" onClick="close_friends()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$nv.title.1<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<a class="$nv.directory.2" href="$nv.directory.0" style="margin-left: 10px; " title="$nv.directory.3" >$nv.directory.1</a><br>
|
||||
<a class="$nv.global_directory.2" href="$nv.global_directory.0" target="blank" style="margin-left: 10px; " title="$nv.global_directory.3" >$nv.global_directory.1</a><br>
|
||||
<a class="$nv.match.2" href="$nv.match.0" style="margin-left: 10px; " title="$nv.match.3" >$nv.match.1</a><br>
|
||||
|
@ -60,7 +115,7 @@ $nv.search
|
|||
|
||||
<div id="close_lastusers">
|
||||
{{ if $lastusers_title }}
|
||||
<h3>$lastusers_title<a id="close_lastusers_icon" onClick="close_lastusers()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$lastusers_title<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id='lastusers-wrapper' class='items-wrapper'>
|
||||
{{ for $lastusers_items as $i }}
|
||||
$i
|
||||
|
@ -80,7 +135,7 @@ $nv.search
|
|||
|
||||
<div id="close_lastphotos">
|
||||
{{ if $photos_title }}
|
||||
<h3>$photos_title<a id="close_photos_icon" onClick="close_lastphotos()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$photos_title<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id='ra-photos-wrapper' class='items-wrapper'>
|
||||
{{ for $photos_items as $i }}
|
||||
$i
|
||||
|
@ -91,7 +146,7 @@ $nv.search
|
|||
|
||||
<div id="close_lastlikes">
|
||||
{{ if $like_title }}
|
||||
<h3>$like_title<a id="close_lastlikes_icon" onClick="close_lastlikes()" class="icon close_box" title="close"></a></h3>
|
||||
<h3>$like_title<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<ul id='likes'>
|
||||
{{ for $like_items as $i }}
|
||||
<li id='ra-photos-wrapper'>$i</li>
|
||||
|
@ -100,6 +155,18 @@ $nv.search
|
|||
{{ endif }}
|
||||
</div>
|
||||
|
||||
<div id="close_twitter">
|
||||
<h3 style="height:1.17em">$twitter.title.1<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id="twitter">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="close_mapquery">
|
||||
{{ if $mapquery }}
|
||||
<h3>$mapquery.title.1<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="$close"></a></h3>
|
||||
<div id="map" style="height:165px;width:165px;margin-left:3px;margin-top:3px;margin-bottom:1px;">
|
||||
</div>
|
||||
<div style="font-size:9px;margin-left:3px;">Data CC-By-SA by <a href="http://openstreetmap.org/">OpenStreetMap</a></div>
|
||||
{{ endif }}
|
||||
</div>
|
||||
</div>
|
|
@ -13,8 +13,23 @@ function theme_content(&$a){
|
|||
$line_height = get_pconfig(local_user(), 'diabook', 'line_height' );
|
||||
$resolution = get_pconfig(local_user(), 'diabook', 'resolution' );
|
||||
$color = get_pconfig(local_user(), 'diabook', 'color' );
|
||||
$TSearchTerm = get_pconfig(local_user(), 'diabook', 'TSearchTerm' );
|
||||
$ELZoom = get_pconfig(local_user(), 'diabook', 'ELZoom' );
|
||||
$ELPosX = get_pconfig(local_user(), 'diabook', 'ELPosX' );
|
||||
$ELPosY = get_pconfig(local_user(), 'diabook', 'ELPosY' );
|
||||
$close_pages = get_pconfig(local_user(), 'diabook', 'close_pages' );
|
||||
$close_mapquery = get_pconfig(local_user(), 'diabook', 'close_mapquery' );
|
||||
$close_profiles = get_pconfig(local_user(), 'diabook', 'close_profiles' );
|
||||
$close_helpers = get_pconfig(local_user(), 'diabook', 'close_helpers' );
|
||||
$close_services = get_pconfig(local_user(), 'diabook', 'close_services' );
|
||||
$close_friends = get_pconfig(local_user(), 'diabook', 'close_friends' );
|
||||
$close_twitter = get_pconfig(local_user(), 'diabook', 'close_twitter' );
|
||||
$close_lastusers = get_pconfig(local_user(), 'diabook', 'close_lastusers' );
|
||||
$close_lastphotos = get_pconfig(local_user(), 'diabook', 'close_lastphotos' );
|
||||
$close_lastlikes = get_pconfig(local_user(), 'diabook', 'close_lastlikes' );
|
||||
|
||||
return diabook_form($a,$font_size, $line_height, $resolution, $color);
|
||||
|
||||
return diabook_form($a,$font_size, $line_height, $resolution, $color, $TSearchTerm, $ELZoom, $ELPosX, $ELPosY, $close_pages, $close_mapquery, $close_profiles, $close_helpers, $close_services, $close_friends, $close_twitter, $close_lastusers, $close_lastphotos, $close_lastlikes);
|
||||
}
|
||||
|
||||
function theme_post(&$a){
|
||||
|
@ -26,6 +41,22 @@ function theme_post(&$a){
|
|||
set_pconfig(local_user(), 'diabook', 'line_height', $_POST['diabook_line_height']);
|
||||
set_pconfig(local_user(), 'diabook', 'resolution', $_POST['diabook_resolution']);
|
||||
set_pconfig(local_user(), 'diabook', 'color', $_POST['diabook_color']);
|
||||
set_pconfig(local_user(), 'diabook', 'TSearchTerm', $_POST['diabook_TSearchTerm']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELZoom', $_POST['diabook_ELZoom']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELPosX', $_POST['diabook_ELPosX']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELPosY', $_POST['diabook_ELPosY']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELPosY', $_POST['diabook_ELPosY']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_pages', $_POST['diabook_close_pages']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_mapquery', $_POST['diabook_close_mapquery']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_profiles', $_POST['diabook_close_profiles']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_helpers', $_POST['diabook_close_helpers']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_services', $_POST['diabook_close_services']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_friends', $_POST['diabook_close_friends']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_twitter', $_POST['diabook_close_twitter']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastusers', $_POST['diabook_close_lastusers']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastphotos', $_POST['diabook_close_lastphotos']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastlikes', $_POST['diabook_close_lastlikes']);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,8 +66,22 @@ function theme_admin(&$a){
|
|||
$line_height = get_config('diabook', 'line_height' );
|
||||
$resolution = get_config('diabook', 'resolution' );
|
||||
$color = get_config('diabook', 'color' );
|
||||
$TSearchTerm = get_config('diabook', 'TSearchTerm' );
|
||||
$ELZoom = get_config('diabook', 'ELZoom' );
|
||||
$ELPosX = get_config('diabook', 'ELPosX' );
|
||||
$ELPosY = get_config('diabook', 'ELPosY' );
|
||||
$close_pages = get_config('diabook', 'close_pages' );
|
||||
$close_mapquery = get_config('diabook', 'close_mapquery' );
|
||||
$close_profiles = get_config('diabook', 'close_profiles' );
|
||||
$close_helpers = get_config('diabook', 'close_helpers' );
|
||||
$close_services = get_config('diabook', 'close_services' );
|
||||
$close_friends = get_config('diabook', 'close_friends' );
|
||||
$close_twitter = get_config('diabook', 'close_twitter' );
|
||||
$close_lastusers = get_config('diabook', 'close_lastusers' );
|
||||
$close_lastphotos = get_config('diabook', 'close_lastphotos' );
|
||||
$close_lastlikes = get_config('diabook', 'close_lastlikes' );
|
||||
|
||||
return diabook_form($a,$font_size, $line_height, $resolution, $color);
|
||||
return diabook_form($a,$font_size, $line_height, $resolution, $color, $TSearchTerm, $ELZoom, $ELPosX, $ELPosY, $close_pages, $close_mapquery, $close_profiles, $close_helpers, $close_services, $close_friends, $close_twitter, $close_lastusers, $close_lastphotos, $close_lastlikes);
|
||||
}
|
||||
|
||||
function theme_admin_post(&$a){
|
||||
|
@ -45,11 +90,25 @@ function theme_admin_post(&$a){
|
|||
set_config('diabook', 'line_height', $_POST['diabook_line_height']);
|
||||
set_config('diabook', 'resolution', $_POST['diabook_resolution']);
|
||||
set_config('diabook', 'color', $_POST['diabook_color']);
|
||||
set_config('diabook', 'TSearchTerm', $_POST['diabook_TSearchTerm']);
|
||||
set_config('diabook', 'ELZoom', $_POST['diabook_ELZoom']);
|
||||
set_config('diabook', 'ELPosX', $_POST['diabook_ELPosX']);
|
||||
set_config('diabook', 'close_pages', $_POST['diabook_close_pages']);
|
||||
set_config('diabook', 'close_mapquery', $_POST['diabook_close_mapquery']);
|
||||
set_config('diabook', 'close_profiles', $_POST['diabook_close_profiles']);
|
||||
set_config('diabook', 'close_helpers', $_POST['diabook_close_helpers']);
|
||||
set_config('diabook', 'close_services', $_POST['diabook_close_services']);
|
||||
set_config('diabook', 'close_friends', $_POST['diabook_close_friends']);
|
||||
set_config('diabook', 'close_twitter', $_POST['diabook_close_twitter']);
|
||||
set_config('diabook', 'close_lastusers', $_POST['diabook_close_lastusers']);
|
||||
set_config('diabook', 'close_lastphotos', $_POST['diabook_close_lastphotos']);
|
||||
set_config('diabook', 'close_lastlikes', $_POST['diabook_close_lastlikes']);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function diabook_form(&$a, $font_size, $line_height, $resolution, $color){
|
||||
function diabook_form(&$a, $font_size, $line_height, $resolution, $color, $TSearchTerm, $ELZoom, $ELPosX, $ELPosY, $close_pages, $close_mapquery, $close_profiles, $close_helpers, $close_services, $close_friends, $close_twitter, $close_lastusers, $close_lastphotos, $close_lastlikes){
|
||||
$line_heights = array(
|
||||
"1.3"=>"1.3",
|
||||
"---"=>"---",
|
||||
|
@ -83,7 +142,47 @@ function diabook_form(&$a, $font_size, $line_height, $resolution, $color){
|
|||
'red'=>'red',
|
||||
'dark'=>'dark',
|
||||
);
|
||||
|
||||
$close_pagesC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_mapqueryC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_profilesC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_helpersC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_servicesC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_friendsC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_twitterC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_lastusersC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_lastphotosC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
$close_lastlikesC = array(
|
||||
'0'=>'show',
|
||||
'1'=>'hide',
|
||||
);
|
||||
|
||||
|
||||
|
||||
$t = file_get_contents( dirname(__file__). "/theme_settings.tpl" );
|
||||
|
@ -95,6 +194,20 @@ function diabook_form(&$a, $font_size, $line_height, $resolution, $color){
|
|||
'$line_height' => array('diabook_line_height', t('Set line-height for posts and comments'), $line_height, '', $line_heights),
|
||||
'$resolution' => array('diabook_resolution', t('Set resolution for middle column'), $resolution, '', $resolutions),
|
||||
'$color' => array('diabook_color', t('Set color scheme'), $color, '', $colors),
|
||||
'$TSearchTerm' => array('diabook_TSearchTerm', t('Set twitter search term'), $TSearchTerm, '', $TSearchTerm),
|
||||
'$ELZoom' => array('diabook_ELZoom', t('Set zoomfactor for Earth Layer'), $ELZoom, '', $ELZoom),
|
||||
'$ELPosX' => array('diabook_ELPosX', t('Set longitude (X) for Earth Layers'), $ELPosX, '', $ELPosX),
|
||||
'$ELPosY' => array('diabook_ELPosY', t('Set latitude (Y) for Earth Layers'), $ELPosY, '', $ELPosY),
|
||||
'$close_pages' => array('diabook_close_pages', t('Community Pages'), $close_pages, '', $close_pagesC),
|
||||
'$close_mapquery' => array('diabook_close_mapquery', t('Earth Layers'), $close_mapquery, '', $close_mapqueryC),
|
||||
'$close_profiles' => array('diabook_close_profiles', t('Community Profiles'), $close_profiles, '', $close_profilesC),
|
||||
'$close_helpers' => array('diabook_close_helpers', t('Help or @NewHere ?'), $close_helpers, '', $close_helpersC),
|
||||
'$close_services' => array('diabook_close_services', t('Connect Services'), $close_services, '', $close_servicesC),
|
||||
'$close_friends' => array('diabook_close_friends', t('Find Friends'), $close_friends, '', $close_friendsC),
|
||||
'$close_twitter' => array('diabook_close_twitter', t('Last tweets'), $close_twitter, '', $close_twitterC),
|
||||
'$close_lastusers' => array('diabook_close_lastusers', t('Last users'), $close_lastusers, '', $close_lastusersC),
|
||||
'$close_lastphotos' => array('diabook_close_lastphotos', t('Last photos'), $close_lastphotos, '', $close_lastphotosC),
|
||||
'$close_lastlikes' => array('diabook_close_lastlikes', t('Last likes'), $close_lastlikes, '', $close_lastlikesC),
|
||||
));
|
||||
return $o;
|
||||
}
|
||||
|
|
|
@ -555,6 +555,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -621,9 +622,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -555,6 +555,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -621,9 +622,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -554,6 +554,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -607,9 +608,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -554,6 +554,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -607,9 +608,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
41
view/theme/diabook/diabook-dark/custom_tinymce.css
Normal file
41
view/theme/diabook/diabook-dark/custom_tinymce.css
Normal file
|
@ -0,0 +1,41 @@
|
|||
body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:14px; margin:8px;}
|
||||
body {background:#FFF;}
|
||||
body.mceForceColors {background:#FFF; color:#000;}
|
||||
h1 {font-size: 2em}
|
||||
h2 {font-size: 1.5em}
|
||||
h3 {font-size: 1.17em}
|
||||
h4 {font-size: 1em}
|
||||
h5 {font-size: .83em}
|
||||
h6 {font-size: .75em}
|
||||
.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
|
||||
a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;}
|
||||
td.mceSelected, th.mceSelected {background-color:#3399ff !important}
|
||||
img {border:0;}
|
||||
table {cursor:default}
|
||||
table td, table th {cursor:text}
|
||||
ins {border-bottom:1px solid green; text-decoration: none; color:green}
|
||||
del {color:red; text-decoration:line-through}
|
||||
cite {border-bottom:1px dashed blue}
|
||||
acronym {border-bottom:1px dotted #CCC; cursor:help}
|
||||
abbr {border-bottom:1px dashed #CCC; cursor:help}
|
||||
|
||||
/* IE */
|
||||
* html body {
|
||||
scrollbar-3dlight-color:#F0F0EE;
|
||||
scrollbar-arrow-color:#676662;
|
||||
scrollbar-base-color:#F0F0EE;
|
||||
scrollbar-darkshadow-color:#DDD;
|
||||
scrollbar-face-color:#E0E0DD;
|
||||
scrollbar-highlight-color:#F0F0EE;
|
||||
scrollbar-shadow-color:#F0F0EE;
|
||||
scrollbar-track-color:#F5F5F5;
|
||||
}
|
||||
|
||||
img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
|
||||
font[face=mceinline] {font-family:inherit !important}
|
||||
|
||||
|
||||
object {
|
||||
display: block; width: 400px;
|
||||
background: #cccccc url(../images/plugin.png) no-repeat center center;
|
||||
}
|
|
@ -522,9 +522,6 @@ header {
|
|||
background: #1d1f1d;
|
||||
background-color: #1d1f1d;
|
||||
z-index: 100;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
}
|
||||
header #site-location {
|
||||
display: none;
|
||||
|
@ -567,9 +564,7 @@ nav {
|
|||
background: #1d1f1d;
|
||||
color: #2e2f2e;
|
||||
z-index: 99;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
|
||||
}
|
||||
nav a,
|
||||
nav a:active,
|
||||
|
@ -836,7 +831,7 @@ ul.menu-popup .empty {
|
|||
box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
.acpopupitem {
|
||||
color: #2e2f2e;
|
||||
color: #eec;
|
||||
padding: 4px;
|
||||
clear: left;
|
||||
}
|
||||
|
|
|
@ -522,9 +522,7 @@ header {
|
|||
background: #1d1f1d;
|
||||
background-color: #1d1f1d;
|
||||
z-index: 100;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
|
||||
}
|
||||
header #site-location {
|
||||
display: none;
|
||||
|
@ -567,9 +565,7 @@ nav {
|
|||
background: #1d1f1d;
|
||||
color: #2e2f2e;
|
||||
z-index: 99;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
|
||||
}
|
||||
nav a,
|
||||
nav a:active,
|
||||
|
|
|
@ -553,6 +553,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -606,9 +607,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -3,6 +3,20 @@
|
|||
* Additional Changes: Michael Vogel <icarus@dabo.de>
|
||||
**/
|
||||
|
||||
/** Fancy Box **/
|
||||
#fancybox-content {
|
||||
width: 0;
|
||||
height: 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
z-index: 1102;
|
||||
border: 0px solid #fff;
|
||||
background: #2e2e2f !important;
|
||||
}
|
||||
|
||||
|
||||
/* ========= */
|
||||
/* = Admin = */
|
||||
/* ========= */
|
||||
|
@ -553,6 +567,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #2e2f2e;
|
||||
|
@ -576,9 +591,6 @@ header {
|
|||
background: #0c0e0c;
|
||||
background-color: #1d1f1d;
|
||||
z-index: 100;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
}
|
||||
header #site-location {
|
||||
display: none;
|
||||
|
@ -606,9 +618,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
@ -625,7 +635,7 @@ header #banner #logo-text {
|
|||
text-decoration: none;
|
||||
}
|
||||
.mail-list-wrapper {
|
||||
background-color: #eec;
|
||||
background-color: #333;
|
||||
margin-bottom: 5px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
@ -636,6 +646,7 @@ header #banner #logo-text {
|
|||
float: left;
|
||||
width: 20%;
|
||||
overflow: hidden;
|
||||
background: #2e2e2f;
|
||||
}
|
||||
.mail-list-wrapper .mail-subject {
|
||||
width: 30%;
|
||||
|
@ -701,10 +712,7 @@ nav {
|
|||
background: #1d1f1d;
|
||||
color: #2e2f2e;
|
||||
z-index: 99;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: black;
|
||||
border-bottom-style: inset;
|
||||
}
|
||||
}
|
||||
nav a,
|
||||
nav a:active,
|
||||
nav a:visited,
|
||||
|
@ -910,7 +918,7 @@ nav #nav-apps-link.selected {
|
|||
}
|
||||
|
||||
.notify-seen {
|
||||
background: none repeat scroll 0 0 #DDDDDD;
|
||||
background: none repeat scroll 0 0 #666;
|
||||
}
|
||||
|
||||
ul.menu-popup {
|
||||
|
@ -1401,7 +1409,7 @@ body .pageheader{
|
|||
padding-top: 10px;
|
||||
}
|
||||
.tread-wrapper a{
|
||||
color: #1872A2;
|
||||
/* color: #1872A2; */
|
||||
}
|
||||
|
||||
.wall-item-decor {
|
||||
|
@ -1680,7 +1688,7 @@ body .pageheader{
|
|||
.wall-item-comment-wrapper .comment-edit-text-full {
|
||||
font-size: 14px;
|
||||
height: 4em;
|
||||
color: #2e302e;
|
||||
color: #eec;
|
||||
border: 1px solid #2e302e;
|
||||
}
|
||||
.comment-edit-preview {
|
||||
|
|
|
@ -555,6 +555,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -609,9 +610,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -557,6 +557,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -611,9 +612,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/*color*/
|
||||
/* messages */
|
||||
|
|
|
@ -555,6 +555,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -609,9 +610,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -557,6 +557,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -611,9 +612,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
/*color*/
|
||||
|
|
|
@ -554,6 +554,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -619,10 +620,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
margin-left: 3px;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -554,6 +554,7 @@ code {
|
|||
text-decoration: none;
|
||||
}
|
||||
/* popup notifications */
|
||||
div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
|
||||
div.jGrowl div.notice {
|
||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
|
@ -619,10 +620,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
margin-left: 3px;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
2885
view/theme/diabook/js/OpenLayers.js
Normal file
2885
view/theme/diabook/js/OpenLayers.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1485
view/theme/diabook/js/jquery.mapquery.core.js
Normal file
1485
view/theme/diabook/js/jquery.mapquery.core.js
Normal file
|
@ -0,0 +1,1485 @@
|
|||
/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
|
||||
* full list of contributors). Published under the MIT license.
|
||||
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
|
||||
* full text of the license. */
|
||||
(function ($) {
|
||||
/**
|
||||
# jquery.mapquery.core.js
|
||||
The main MapQuery file. It contains the MapQuery constructor, the MapQuery.Map
|
||||
constructor and the MapQuery.Layer constructor.
|
||||
|
||||
|
||||
### *$('selector')*.`mapQuery([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: initialise MapQuery and associate it with
|
||||
the matched element
|
||||
|
||||
**options** an object of key-value pairs with options for the map. Possible
|
||||
pairs are:
|
||||
|
||||
* **layers** (array of MapQuery.Layer *or* MapQuery.Layer): Either an array
|
||||
or a single layer that should be added to the map
|
||||
* **center** ({position: [x,y], zoom: z(int), box: [llx,lly,urx,ury]}):
|
||||
Initially go to a certain location. At least one layer (in the `layers`
|
||||
option) needs to be specified.
|
||||
|
||||
> Returns: $('selector') (jQuery object)
|
||||
|
||||
|
||||
We can initialise MapQuery without any options, or for instance pass in a layer
|
||||
object. The mapQuery function returns a jQuery object, to access the mapQuery object retrieve
|
||||
the 'mapQuery' data object.
|
||||
|
||||
var map = $('#map').mapQuery(); //create an empty map
|
||||
var map = $('#map').mapQuery({layers:[{type:'osm'}]); //create a map with osm
|
||||
|
||||
var mq = map.data('mapQuery'); //get the MapQuery object
|
||||
*/
|
||||
$.MapQuery = $.MapQuery || {};
|
||||
|
||||
/**
|
||||
|
||||
---
|
||||
|
||||
#MapQuery.Map
|
||||
|
||||
The MapQuery.Map object. It is automatically constructed from the options
|
||||
given in the `mapQuery([options])` constructor. The Map object is refered
|
||||
to as _map_ in the documentation.
|
||||
*/
|
||||
$.MapQuery.Map = function(element, options) {
|
||||
var self = this;
|
||||
//If there are a maxExtent and a projection other than Spherical Mercator
|
||||
//automagically set maxResolution if it is not set
|
||||
//TODO smo 20110614: put maxExtent and maxResolution setting in the
|
||||
//proper option building routine
|
||||
if(options){
|
||||
if(!options.maxResolution&&options.maxExtent&&options.projection){
|
||||
options.maxResolution = (options.maxExtent[2]-options.maxExtent[0])/256;
|
||||
}}
|
||||
this.options = $.extend({}, new $.fn.mapQuery.defaults.map(), options);
|
||||
|
||||
this.element = element;
|
||||
// TODO vmx 20110609: do proper options building
|
||||
// TODO SMO 20110616: make sure that all projection strings are uppercase
|
||||
// smo 20110620: you need the exact map options in the overviewmap widget
|
||||
// as such we need to preserve them
|
||||
this.olMapOptions = $.extend({}, this.options);
|
||||
delete this.olMapOptions.layers;
|
||||
delete this.olMapOptions.maxExtent;
|
||||
delete this.olMapOptions.zoomToMaxExtent;
|
||||
delete this.olMapOptions.center;
|
||||
|
||||
//TODO SMO20110630 the maxExtent is in mapprojection, decide whether or
|
||||
//not we need to change it to displayProjection
|
||||
this.maxExtent = this.options.maxExtent;
|
||||
this.olMapOptions.maxExtent = new OpenLayers.Bounds(
|
||||
this.maxExtent[0],this.maxExtent[1],this.maxExtent[2],this.maxExtent[3]);
|
||||
|
||||
|
||||
this.projection = this.options.projection;
|
||||
this.displayProjection = this.options.displayProjection;
|
||||
|
||||
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
|
||||
OpenLayers.Util.onImageLoadErrorColor = "transparent";
|
||||
|
||||
// create the OpenLayers Map
|
||||
this.olMap = new OpenLayers.Map(this.element[0], this.olMapOptions);
|
||||
|
||||
//OpenLayers doesn't want to return a maxExtent when there is no baselayer
|
||||
//set (eg on an empty map, so we create a fake baselayer
|
||||
this.olMap.addLayer(new OpenLayers.Layer('fake', {baseLayer: true}));
|
||||
|
||||
// Keep IDs of vector layer for select feature control
|
||||
this.vectorLayers = [];
|
||||
this.selectFeatureControl = null;
|
||||
// Counts up to create unique IDs
|
||||
this.idCounter = 0;
|
||||
|
||||
element.data('mapQuery', this);
|
||||
this.layersList = {};
|
||||
|
||||
// To bind and trigger jQuery events
|
||||
this.events = $({});
|
||||
|
||||
this.handlers = {
|
||||
// Triggers the jQuery events, after the OpenLayers events
|
||||
// happened without any further processing
|
||||
simple: function(data) {
|
||||
this.trigger(data.type);
|
||||
}
|
||||
};
|
||||
|
||||
// MapQuery doesn't bind all OpenLayers events automatically,
|
||||
// but just the ones that make sense.
|
||||
// Events that are left out intensionally are:
|
||||
// - changebaselayer: MapQuery doesn't have the concept of base layers
|
||||
// - mouseover, mouseout, mousemove: Handle those with jQuery on the
|
||||
// DOM level
|
||||
// Some events can be triggered by MapQuery without listening to the
|
||||
// OpenLayers events. This only works for events that are triggered
|
||||
// by functionality that MapQuery implements in some custom way, e.g.
|
||||
// (pre)addlayer, (pre)removelayer, changelayer.
|
||||
// TODO vmx 20120309: Proper docs for the events, here's some quickly
|
||||
// written info:
|
||||
// - generally spoken, the map events follow the OpeLayer events
|
||||
// - preaddlayer, movestart, move, moveend, zoomend: no additional
|
||||
// argument
|
||||
// - addlayer, preremovelayer, removelayer: layer as additional argument
|
||||
// - changelayer: layer and the property that changed as additional
|
||||
// argument. Possible values for the property are: position (in
|
||||
// the layer stack), opacity, visibility
|
||||
// Currently this event is always fired, even if the property
|
||||
// was only meant to be changed, but wasn't exctually changed.
|
||||
// I.e. that the event is fired even if you call
|
||||
// `layer.visible(true)` although the layer is already visible.
|
||||
// I'm (vmx) not sure if we want to change that :)
|
||||
this.olMap.events.on({
|
||||
scope: this,
|
||||
movestart: this.handlers.simple,
|
||||
move: this.handlers.simple,
|
||||
moveend: this.handlers.simple,
|
||||
zoomend: this.handlers.simple
|
||||
});
|
||||
|
||||
// Add layers to the map
|
||||
if (this.options.layers!==undefined) {
|
||||
this.layers(this.options.layers);
|
||||
// You can only go to some location if there were layers added
|
||||
if (this.options.center!==undefined) {
|
||||
this.center(this.options.center);
|
||||
}
|
||||
}
|
||||
|
||||
// zoom to the maxExtent of the map if no precise location was specified
|
||||
if (this.options.zoomToMaxExtent && this.options.center===undefined) {
|
||||
this.olMap.zoomToMaxExtent();
|
||||
}
|
||||
};
|
||||
|
||||
$.MapQuery.Map.prototype = {
|
||||
/**
|
||||
###*map*.`layers([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the layers of the map
|
||||
|
||||
**options** an object of key-value pairs with options to create one or
|
||||
more layers
|
||||
|
||||
>Returns: [layer] (array of MapQuery.Layer) _or_ false
|
||||
|
||||
|
||||
The `.layers()` method allows us to attach layers to a mapQuery object. It takes
|
||||
an options object with layer options. To add multiple layers, create an array of
|
||||
layer options objects. If an options object is given, it will return the
|
||||
resulting layer(s). We can also use it to retrieve all layers currently attached
|
||||
to the map.
|
||||
|
||||
When adding layers, those are returned. If the creation is cancled by returning
|
||||
`false` in the `preaddlayer` event, this function returns `false` to
|
||||
intentionally break the chain instead of hiding errors subtly).
|
||||
|
||||
|
||||
var osm = map.layers({type:'osm'}); //add an osm layer to the map
|
||||
var layers = map.layers(); //get all layers of the map
|
||||
|
||||
*/
|
||||
layers: function(options) {
|
||||
//var o = $.extend({}, options);
|
||||
var self = this;
|
||||
switch(arguments.length) {
|
||||
case 0:
|
||||
return this._allLayers();
|
||||
case 1:
|
||||
if (!$.isArray(options)) {
|
||||
return this._addLayer(options);
|
||||
}
|
||||
else {
|
||||
return $.map(options, function(layer) {
|
||||
return self._addLayer(layer);
|
||||
}).reverse();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw('wrong argument number');
|
||||
}
|
||||
},
|
||||
// Returns all layers as an array, sorted by there order in the map. First
|
||||
// element in the array is the topmost layer
|
||||
_allLayers: function() {
|
||||
var layers = [];
|
||||
$.each(this.layersList, function(id, layer) {
|
||||
var item = [layer.position(), layer];
|
||||
layers.push(item);
|
||||
});
|
||||
var sorted = layers.sort( function compare(a, b) {
|
||||
return a[0] - b[0];
|
||||
});
|
||||
var result = $.map(sorted, function(item) {
|
||||
return item[1];
|
||||
});
|
||||
return result.reverse();
|
||||
},
|
||||
_addLayer: function(options) {
|
||||
var id = this._createId();
|
||||
var layer = new $.MapQuery.Layer(this, id, options);
|
||||
// NOTE vmx 20120305: Not sure if this is a good idea, or if it would
|
||||
// be better to include `options` with the preaddlayer event
|
||||
if (this._triggerReturn('preaddlayer', [layer])===false) {
|
||||
return false;
|
||||
}
|
||||
this.olMap.addLayer(layer.olLayer);
|
||||
|
||||
this.layersList[id] = layer;
|
||||
if (layer.isVector) {
|
||||
this.vectorLayers.push(id);
|
||||
}
|
||||
this._updateSelectFeatureControl(this.vectorLayers);
|
||||
|
||||
layer.trigger('addlayer');
|
||||
return layer;
|
||||
},
|
||||
// Creates a new unique ID for a layer
|
||||
_createId: function() {
|
||||
return 'mapquery_' + this.idCounter++;
|
||||
},
|
||||
_removeLayer: function(id) {
|
||||
var layer = this.layersList[id];
|
||||
if (this._triggerReturn('preremovelayer', [layer])===false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// remove id from vectorlayer if it is there list
|
||||
this.vectorLayers = $.grep(this.vectorLayers, function(elem) {
|
||||
return elem != id;
|
||||
});
|
||||
this._updateSelectFeatureControl(this.vectorLayers);
|
||||
this.olMap.removeLayer(layer.olLayer);
|
||||
|
||||
// XXX vmx: shouldn't the layer be destroyed() properly?
|
||||
delete this.layersList[id];
|
||||
|
||||
layer.trigger('removelayer');
|
||||
return this;
|
||||
},
|
||||
/**
|
||||
###*map*.`center([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the extent, zoom and position of the map
|
||||
|
||||
* **position** the position as [x,y] in displayProjection (default EPSG:4326)
|
||||
to center the map at
|
||||
* **zoom** the zoomlevel as integer to zoom the map to
|
||||
* **box** an array with the lower left x, lower left y, upper right x,
|
||||
upper right y to zoom the map to,
|
||||
this will take precedent when conflicting with any of the above values
|
||||
* **projection** the projection the coordinates are in, default is
|
||||
the displayProjection
|
||||
|
||||
>Returns: {position: [x,y], zoom: z(int), box: [llx,lly,urx,ury]}
|
||||
|
||||
|
||||
The `.center()` method allows us to move to map to a specific zoom level,
|
||||
specific position or a specific extent. We can specify the projection of the
|
||||
coordinates to override the displayProjection. For instance you want to show
|
||||
the coordinates in 4326, but you have a dataset in EPSG:28992
|
||||
(dutch projection). We can also retrieve the current zoomlevel, position and
|
||||
extent from the map. The coordinates are returned in displayProjection.
|
||||
|
||||
|
||||
var center = map.center(); //get the current zoom, position and extent
|
||||
map.center({zoom:4}); //zoom to zoomlevel 4
|
||||
map.center({position:[5,52]}); //pan to point 5,52
|
||||
map.center(box:[-180,-90,180,90]); //zoom to the box -180,-900,180,90
|
||||
//pan to point 125000,485000 in dutch projection
|
||||
map.center({position:[125000,485000],projection:'EPSG:28992'});
|
||||
*/
|
||||
center: function (options) {
|
||||
var position;
|
||||
var mapProjection = new OpenLayers.Projection(this.projection);
|
||||
// Determine source projection
|
||||
var sourceProjection = null;
|
||||
var zoom;
|
||||
var box;
|
||||
if(options && options.projection) {
|
||||
sourceProjection = options.projection.CLASS_NAME ===
|
||||
'OpenLayers.Projection' ? options.projection :
|
||||
new OpenLayers.Projection(options.projection);
|
||||
} else {
|
||||
var displayProjection = this.displayProjection;
|
||||
if(!displayProjection) {
|
||||
// source == target
|
||||
sourceProjection = new OpenLayers.Projection('EPSG:4326');
|
||||
} else {
|
||||
sourceProjection = displayProjection.CLASS_NAME ===
|
||||
'OpenLayers.Projection' ? displayProjection :
|
||||
new OpenLayers.Projection(displayProjection);
|
||||
}
|
||||
}
|
||||
|
||||
// Get the current position
|
||||
if (arguments.length===0) {
|
||||
position = this.olMap.getCenter();
|
||||
zoom = this.olMap.getZoom();
|
||||
box = this.olMap.getExtent();
|
||||
|
||||
if (!mapProjection.equals(sourceProjection)) {
|
||||
position.transform(mapProjection, sourceProjection);
|
||||
}
|
||||
box.transform(mapProjection,sourceProjection);
|
||||
box = box!==null ? box.toArray() : [];
|
||||
return {
|
||||
position: [position.lon, position.lat],
|
||||
zoom: this.olMap.getZoom(),
|
||||
box: box
|
||||
};
|
||||
}
|
||||
|
||||
// Zoom to the extent of the box
|
||||
if (options.box!==undefined) {
|
||||
box = new OpenLayers.Bounds(
|
||||
options.box[0], options.box[1],options.box[2], options.box[3]);
|
||||
if (!mapProjection.equals(sourceProjection)) {
|
||||
box.transform(sourceProjection,mapProjection);
|
||||
}
|
||||
this.olMap.zoomToExtent(box);
|
||||
|
||||
}
|
||||
// Only zoom is given
|
||||
else if (options.position===undefined) {
|
||||
this.olMap.zoomTo(options.zoom);
|
||||
}
|
||||
// Position is given, zoom maybe as well
|
||||
else {
|
||||
position = new OpenLayers.LonLat(options.position[0],
|
||||
options.position[1]);
|
||||
if (!mapProjection.equals(sourceProjection)) {
|
||||
position.transform(sourceProjection, mapProjection);
|
||||
}
|
||||
// options.zoom might be undefined, so we are good to
|
||||
// pass it on
|
||||
this.olMap.setCenter(position, options.zoom);
|
||||
}
|
||||
},
|
||||
_updateSelectFeatureControl: function(layerIds) {
|
||||
var vectorLayers = [];
|
||||
var layersList = this.layersList;
|
||||
if (this.selectFeatureControl!==null) {
|
||||
this.selectFeatureControl.deactivate();
|
||||
this.selectFeatureControl.destroy();
|
||||
}
|
||||
$.each(layerIds, function() {
|
||||
vectorLayers.push(layersList[this].olLayer);
|
||||
});
|
||||
this.selectFeatureControl = new OpenLayers.Control.SelectFeature(
|
||||
vectorLayers);
|
||||
this.olMap.addControl(this.selectFeatureControl);
|
||||
this.selectFeatureControl.activate();
|
||||
},
|
||||
// This function got a bit too clever. The reason is, that jQuery's
|
||||
// bind() is overloaded with so many possible combinations of arguments.
|
||||
// And, of course, MapQuery wants to support them all
|
||||
// The essence of the function is to wrap the original callback into
|
||||
// the correct scope
|
||||
bind: function(types, data, fn) {
|
||||
var self = this;
|
||||
|
||||
// A map of event/handle pairs, wrap each of them
|
||||
if(arguments.length===1) {
|
||||
var wrapped = {};
|
||||
$.each(types, function(type, fn) {
|
||||
wrapped[type] = function() {
|
||||
return fn.apply(self, arguments);
|
||||
};
|
||||
});
|
||||
this.events.bind.apply(this.events, [wrapped]);
|
||||
}
|
||||
else {
|
||||
var args = [types];
|
||||
// Only callback given, but no data (types, fn), hence
|
||||
// `data` is the function
|
||||
if(arguments.length===2) {
|
||||
fn = data;
|
||||
}
|
||||
else {
|
||||
if (!$.isFunction(fn)) {
|
||||
throw('bind: you might have a typo in the function name');
|
||||
}
|
||||
// Callback and data given (types, data, fn), hence include
|
||||
// the data in the argument list
|
||||
args.push(data);
|
||||
}
|
||||
|
||||
args.push(function() {
|
||||
return fn.apply(self, arguments);
|
||||
});
|
||||
|
||||
this.events.bind.apply(this.events, args);
|
||||
}
|
||||
|
||||
//this.events.bind.call(this.events, types, function() {
|
||||
// data.apply(self, arguments);
|
||||
//});
|
||||
//this.events.bind.call(this.events, types, function() {
|
||||
// data.apply(self, arguments);
|
||||
//});
|
||||
|
||||
//this.events.bind.apply(this.events, arguments);
|
||||
//this.events.bind.call(this.events, types, $.proxy(data, self));
|
||||
//this.events.bind.apply(this.events, arguments);//.bind(this);
|
||||
//this.events.bind.apply(this.events, $.proxy(arguments));//.bind(this);
|
||||
//this.events.bind.apply(this.events, $.proxy(arguments));//.bind(this);
|
||||
//this.events.bind(types, data, fn);//.bind(this);
|
||||
//this.events.bind.call(this.events, types, data, fn);//.bind(this);
|
||||
return this;
|
||||
},
|
||||
/**
|
||||
###*map*.`trigger(name [, parameters])`
|
||||
_version added 0.2_
|
||||
####**Description**: triggers an event on the map
|
||||
|
||||
* **name** the name of the event
|
||||
* **parameters** additional parameters that will be passed on with the event
|
||||
|
||||
>Returns: map (MapQuery.Map)
|
||||
|
||||
To subscribe to the triggered events, you need to bind to the mapuuu.
|
||||
|
||||
map.bind('myEvent', function(evt) {
|
||||
console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
|
||||
});
|
||||
map.trigger('myEvent', 'some', 'values');
|
||||
*/
|
||||
trigger: function() {
|
||||
// There is no point in using trigger() insted of triggerHandler(), as
|
||||
// we don't fire native events
|
||||
this.events.triggerHandler.apply(this.events, arguments);
|
||||
return this;
|
||||
},
|
||||
// Basically a trigger that returns the return value of the last listener
|
||||
_triggerReturn: function() {
|
||||
return this.events.triggerHandler.apply(this.events, arguments);
|
||||
},
|
||||
destroy: function() {
|
||||
this.olMap.destroy();
|
||||
this.element.removeData('mapQuery');
|
||||
}
|
||||
};
|
||||
/**
|
||||
|
||||
---
|
||||
|
||||
#MapQuery.Layer
|
||||
|
||||
The MapQuery.Layer object. It is constructed with layer options object in the
|
||||
map.`layers([options])` function or by passing a `layer:{options}` object in
|
||||
the `mapQuery()` constructor. The Layer object is refered to as _layer_ in the
|
||||
documentation.
|
||||
*/
|
||||
$.MapQuery.Layer = function(map, id, options) {
|
||||
|
||||
var self = this;
|
||||
// apply default options that are not specific to a layer
|
||||
|
||||
this.id = id;
|
||||
this.label = options.label || this.id;
|
||||
// a reference to the map object is needed as it stores e.g. the list
|
||||
// of all layers (and we need to keep track of it, if we delete a
|
||||
// layer)
|
||||
this.map = map;
|
||||
|
||||
// true if this layer is a vector layer
|
||||
this.isVector = false;
|
||||
|
||||
// to bind and trigger jQuery events
|
||||
this.events = $({});
|
||||
|
||||
this.handlers = {
|
||||
// Triggers the jQuery events, after the OpenLayers events
|
||||
// happened without any further processing
|
||||
simple: function(data) {
|
||||
this.trigger(data.type);
|
||||
},
|
||||
// All OpenLayers events that are triggered by user interaction,
|
||||
// like clicking somewhere or selecting a feature, need to be
|
||||
// handled in a special way. Those OpenLayers events will then be
|
||||
// triggered by MapQuery as well
|
||||
// In case of the "featureselected" event, this means that the
|
||||
// logic of handling the event is completely within the event
|
||||
// handler. When ".select()" on a feature is called, it will just
|
||||
// trigger the OpenLayers "featureselected" event, whose handler
|
||||
// will then trigger the corresponding jQuery event.
|
||||
includeFeature: function(data) {
|
||||
var feature = new $.MapQuery.Feature(this, {olFeature:
|
||||
data.feature});
|
||||
this.trigger(data.type, [feature]);
|
||||
},
|
||||
prependLayer: function(data) {
|
||||
this.trigger('layer' + data.type);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// create the actual layer based on the options
|
||||
// Returns layer and final options for the layer (for later re-use,
|
||||
// e.g. zoomToMaxExtent).
|
||||
var res = $.MapQuery.Layer.types[options.type.toLowerCase()].call(
|
||||
this, options);
|
||||
this.olLayer = res.layer;
|
||||
this.options = res.options;
|
||||
|
||||
// Some good documentation for the events is needed. Here is a short
|
||||
// description on how the current events compare to the OpenLayer
|
||||
// events on the layer:
|
||||
// - added, remove: not needed, there's addlayer and removelayer
|
||||
// - visibilitychanged: not needed, there's the changelayer event
|
||||
// - move, moveend: not needed as you get them from the map, not the layer
|
||||
// - loadstart, loadend: renamed to layerloadstart, layerloadend
|
||||
this.olLayer.events.on({
|
||||
scope: this,
|
||||
loadstart: this.handlers.prependLayer,
|
||||
loadend: this.handlers.prependLayer,
|
||||
featureselected: this.handlers.includeFeature,
|
||||
featureunselected: this.handlers.includeFeature,
|
||||
featureremoved: this.handlers.includeFeature
|
||||
});
|
||||
|
||||
// To be able to retreive the MapQuery layer, when we only have the
|
||||
// OpenLayers layer available. For example on the layeradded event.
|
||||
// NOTE vmx 2012-02-26: Any nicer solution is welcome
|
||||
this.olLayer.mapQueryId = this.id;
|
||||
};
|
||||
|
||||
$.MapQuery.Layer.prototype = {
|
||||
/**
|
||||
###*layer*.`down([delta])`
|
||||
_version added 0.1_
|
||||
####**Description**: move the layer down in the layer stack of the map
|
||||
|
||||
* **delta** the amount of layers the layer has to move down in the layer
|
||||
stack (default 1)
|
||||
|
||||
>Returns layer (MapQuery.Layer)
|
||||
|
||||
|
||||
The `.down()` method is a shortcut method for `.position(pos)` which makes
|
||||
it easier to move a layer down in the layerstack relative to its current
|
||||
position. It takes an integer and will try to move the layer down the number of
|
||||
places given. If delta is bigger than the current position in the stack, it
|
||||
will put the layer at the bottom.
|
||||
|
||||
|
||||
layer.down(); //move layer 1 place down
|
||||
layer.down(3); //move layer 3 places down
|
||||
|
||||
*/
|
||||
down: function(delta) {
|
||||
delta = delta || 1;
|
||||
var pos = this.position();
|
||||
pos = pos - delta;
|
||||
if (pos<0) {pos = 0;}
|
||||
this.position(pos);
|
||||
return this;
|
||||
},
|
||||
// NOTE vmx: this would be pretty cool, but it's not easily possible
|
||||
// you could use $.each($.geojq.layer())) instead, this is for pure
|
||||
// convenience.
|
||||
each: function () {},
|
||||
/**
|
||||
###*layer*.`remove()`
|
||||
_version added 0.2_
|
||||
####**Description**: remove the layer from the map
|
||||
|
||||
>Returns: map (MapQuery.Map) or false
|
||||
|
||||
|
||||
The `.remove()` method allows us to remove a layer from the map.
|
||||
It returns the `map` object if the layer was removed, or `false` if the
|
||||
removal was prevented in the preremovelayer event.
|
||||
|
||||
var id = layer.remove(); //remove this layer
|
||||
|
||||
|
||||
*/
|
||||
remove: function() {
|
||||
// remove references to this layer that are stored in the
|
||||
// map object
|
||||
return this.map._removeLayer(this.id);
|
||||
},
|
||||
/**
|
||||
###*layer*.`position([position])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the `position` of the layer in the layer
|
||||
stack of the map
|
||||
|
||||
* **position** an integer setting the new position of the layer in the layer stack
|
||||
|
||||
>Returns: position (integer) _or_ layer (MapQuery.Layer)
|
||||
|
||||
|
||||
The `.position()` method allows us to change the position of the layer in the
|
||||
layer stack. It will take into account the hidden baselayer that is used by
|
||||
OpenLayers. The lowest layer is position 0. If no position is given, it will
|
||||
return the current postion.
|
||||
|
||||
|
||||
var pos = layer.position(); //get position of layer in the layer stack
|
||||
layer.position(2); //put layer on position 2 in the layer stack
|
||||
|
||||
*/
|
||||
position: function(pos) {
|
||||
if (pos===undefined) {
|
||||
return this.map.olMap.getLayerIndex(this.olLayer)-1;
|
||||
}
|
||||
else {
|
||||
this.map.olMap.setLayerIndex(this.olLayer, pos+1);
|
||||
this.trigger('changelayer', ['position']);
|
||||
return this;
|
||||
}
|
||||
},
|
||||
/**
|
||||
###*layer*.`up([delta])`
|
||||
_version added 0.1_
|
||||
####**Description**: move the layer up in the layer stack of the map
|
||||
|
||||
* **delta** the amount of layers the layer has to move up in the layer
|
||||
stack (default 1)
|
||||
|
||||
>Returns: layer (MapQuery.Layer)
|
||||
|
||||
|
||||
The `.up()` method is a shortcut method for `.position(pos)` which makes
|
||||
it easier to move a layer up in the layerstack relative to its current
|
||||
position. It takes an integer and will move the layer up the number of places
|
||||
given.
|
||||
|
||||
|
||||
|
||||
layer.up(); //move layer 1 place up
|
||||
layer.up(3); //move layer 3 places up
|
||||
*/
|
||||
up: function(delta) {
|
||||
delta = delta || 1;
|
||||
var pos = this.position();
|
||||
pos = pos + delta;
|
||||
this.position(pos);
|
||||
return this;
|
||||
},
|
||||
/**
|
||||
###*layer*.`visible([visible])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the `visible` state of the layer
|
||||
|
||||
* **visible** a boolean setting the visibility of the layer
|
||||
|
||||
>Returns: visible (boolean)
|
||||
|
||||
|
||||
The `.visible()` method allows us to change the visibility of the layer.
|
||||
If no visible is given, it will return the current visibility.
|
||||
|
||||
|
||||
var vis = layer.visible(); //get the visibility of layer
|
||||
layer.visible(true); //set visibility of layer to true
|
||||
|
||||
*/
|
||||
visible: function(vis) {
|
||||
if (vis===undefined) {
|
||||
return this.olLayer.getVisibility();
|
||||
}
|
||||
else {
|
||||
this.olLayer.setVisibility(vis);
|
||||
this.trigger('changelayer', ['visibility']);
|
||||
return this;
|
||||
}
|
||||
},
|
||||
/**
|
||||
###*layer*.`opacity([opacity])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the `opacity` of the layer
|
||||
|
||||
* **position** a float [0-1] setting the opacity of the layer
|
||||
|
||||
>Returns: opacity (float) _or_ layer (MapQuery.Layer)
|
||||
|
||||
|
||||
The `.opacity()` method allows us to change the opacity of the layer.
|
||||
If no opacity is given, it will return the current opacity.
|
||||
|
||||
|
||||
var opac = layer.opacity(); //get opacity of layer
|
||||
layer.opacity(0.7); //set opacity of layer to 0.7
|
||||
|
||||
*/
|
||||
opacity: function(opac) {
|
||||
if (opac===undefined) {
|
||||
// this.olLayer.opacity can be null if never
|
||||
// set so return the visibility
|
||||
var value = this.olLayer.opacity ?
|
||||
this.olLayer.opacity : this.olLayer.getVisibility();
|
||||
return value;
|
||||
}
|
||||
else {
|
||||
this.olLayer.setOpacity(opac);
|
||||
this.trigger('changelayer', ['opacity']);
|
||||
return this;
|
||||
}
|
||||
},
|
||||
// every event gets the layer passed in
|
||||
bind: function() {
|
||||
// Use the same bind function as for the map
|
||||
this.map.bind.apply(this, arguments);
|
||||
return this;
|
||||
},
|
||||
/**
|
||||
###*layer*.`trigger(name [, parameters])`
|
||||
_version added 0.2_
|
||||
####**Description**: triggers an event on the layer and map
|
||||
|
||||
* **name** the name of the event
|
||||
* **parameters** additional parameters that will be passed on with the event
|
||||
|
||||
>Returns: layer (MapQuery.Layer)
|
||||
|
||||
The events get triggered on the layer as well as on the map. To subscribe to
|
||||
the triggered events, you can either bind to the layer or the map. If bound
|
||||
to the map, the second argument in the bind will be the layer the event
|
||||
came from
|
||||
|
||||
layer.bind('myEvent', function(evt) {
|
||||
console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
|
||||
});
|
||||
map.bind('myEvent', function(evt, layer) {
|
||||
console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
|
||||
});
|
||||
layer.trigger('myEvent', 'some', 'values');
|
||||
*/
|
||||
trigger: function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
this.events.triggerHandler.apply(this.events, args);
|
||||
|
||||
this._addLayerToArgs(args);
|
||||
|
||||
this.map.events.triggerHandler.apply(this.map.events, args);
|
||||
return this;
|
||||
},
|
||||
// Basically a trigger that returns the return value of the last listener
|
||||
_triggerReturn: function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var ret = this.events.triggerHandler.apply(this.events, args);
|
||||
if (ret !== undefined) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
this._addLayerToArgs(args);
|
||||
return this.events.triggerHandler.apply(this.map.events, args);
|
||||
},
|
||||
// Adds the current layer to the event arguments, so that it is included
|
||||
// in the event on the map
|
||||
_addLayerToArgs: function(args) {
|
||||
// Add layer for the map event
|
||||
if (args.length===1) {
|
||||
args.push([this]);
|
||||
}
|
||||
else {
|
||||
args[1].unshift(this);
|
||||
}
|
||||
},
|
||||
/**
|
||||
###*layer*.`features([options])`
|
||||
_version added 0.2.0_
|
||||
####**Description**: get/set the features of a (vector) layer
|
||||
|
||||
**options** an object of key-value pairs with options to create one or
|
||||
more features
|
||||
|
||||
>Returns: [features] (array of MapQuery.Feature)
|
||||
|
||||
|
||||
The `.features()` method allows us to attach features to a mapQuery layer
|
||||
object. It takes an options object with feature options. To add multiple
|
||||
features, create an array of feature options objects. If an options object
|
||||
is given, it will return the resulting feature(s). We can also use it to
|
||||
retrieve all features currently attached to the layer.
|
||||
|
||||
|
||||
// add an (vector) json layer to the map
|
||||
var jsonlayer = map.layers({type:'json'});
|
||||
// add a feature to the layer
|
||||
jsonlayer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
|
||||
// get all features of a layer (sorted with first added feature at the beginning
|
||||
var features = jsonlayer.features();
|
||||
*/
|
||||
features: function(options) {
|
||||
var self = this;
|
||||
switch(arguments.length) {
|
||||
// return all features
|
||||
case 0:
|
||||
return this._allFeatures();
|
||||
// add new feature(s)
|
||||
case 1:
|
||||
if (!$.isArray(options)) {
|
||||
return this._addFeature(options);
|
||||
}
|
||||
else {
|
||||
return $.map(options, function(feature) {
|
||||
return self._addFeature(feature);
|
||||
});
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw('wrong argument number');
|
||||
}
|
||||
},
|
||||
_allFeatures: function() {
|
||||
var layer = this;
|
||||
return $.map(layer.olLayer.features, function(feature) {
|
||||
return new $.MapQuery.Feature(layer, {olFeature: feature});
|
||||
});
|
||||
},
|
||||
_addFeature: function(options) {
|
||||
var feature = new $.MapQuery.Feature(this, options);
|
||||
// NOTE vmx 2012-04-19: Not sure if this is a good idea, or if it would
|
||||
// be better to include `options` with the preaddfeature event
|
||||
if (this._triggerReturn('preaddfeature', [feature])===false) {
|
||||
return false;
|
||||
}
|
||||
this.olLayer.addFeatures(feature.olFeature);
|
||||
this.trigger('addfeature', [feature]);
|
||||
return feature;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
#MapQuery.Feature
|
||||
|
||||
The MapQuery.Feature object. It is constructed with a feature options object
|
||||
in the layer.`features([options])` function. The Feautre object is refered to
|
||||
as _feature_ in the documentation.
|
||||
|
||||
TODO vmx 20110905: Support other geometry types than GeoJSON
|
||||
options:
|
||||
* geometry: A GeoJSON geometry
|
||||
* properties: Properties for the feature
|
||||
*/
|
||||
// Not in the pulic API docs: You can pass in as options:
|
||||
// * olFeature: This will wrap the olFeature in a MapQuery feature
|
||||
$.MapQuery.Feature = function(layer, options) {
|
||||
// The ID is the
|
||||
this._id = layer.map._createId();
|
||||
this.layer = layer;
|
||||
|
||||
// Feature already exists on the layer, it just needs to be wrapped
|
||||
// to an MapQuery feature
|
||||
if (options.olFeature) {
|
||||
this.olFeature = options.olFeature;
|
||||
}
|
||||
else {
|
||||
// XXX vmx 20110905: Different feature types might make sense:
|
||||
// (Geo)JSON, KML, WKT
|
||||
// vmx 2012-04-14: I changed my mind quite some time ago. We should onlu
|
||||
// support GeoJSON and let the user easily transfrom their format
|
||||
// (e.g. KML) to GeoJSON, before they add a feature to the layer
|
||||
var GeoJSON = new OpenLayers.Format.GeoJSON();
|
||||
var geometry = GeoJSON.parseGeometry(options.geometry);
|
||||
geometry.transform(
|
||||
new OpenLayers.Projection(this.layer.map.displaProjection),
|
||||
new OpenLayers.Projection(this.layer.map.projection));
|
||||
|
||||
this.olFeature = new OpenLayers.Feature.Vector(geometry,
|
||||
options.properties);
|
||||
}
|
||||
|
||||
// Modify the features to be more practical
|
||||
// e.g. copy properties that should be easily accessed from the
|
||||
// outside, out of the olLayer and to the feature level
|
||||
this.properties = $.extend(true, {}, this.olFeature.attributes);
|
||||
this.geometry = $.parseJSON(
|
||||
new OpenLayers.Format.GeoJSON().write(this.olFeature.geometry));
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
$.MapQuery.Feature.prototype = {
|
||||
/**
|
||||
###*feature*.`remove()`
|
||||
_version added 0.2.0_
|
||||
####**Description**: remove the feature from the layer
|
||||
|
||||
>Returns: layer (layer) or false
|
||||
|
||||
|
||||
The `.remove()` method allows us to remove a feature from the layer.
|
||||
It returns the `layer` object if the feature was removed, or `false` if the
|
||||
removal was prevented in the preremovefeature event.
|
||||
|
||||
// add a feature to a layer
|
||||
var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
|
||||
// remove the feature again
|
||||
feature.remove();
|
||||
*/
|
||||
remove: function() {
|
||||
if (this.layer._triggerReturn('preremovefeature', [this])===false) {
|
||||
return false;
|
||||
}
|
||||
this.layer.olLayer.removeFeatures(this.olFeature);
|
||||
// The `removefeature` event is triggered by an OpenLayes event handler
|
||||
return this.layer;
|
||||
},
|
||||
/**
|
||||
###*feature*.`select(exclusive)`
|
||||
_version added 0.2.0_
|
||||
####**Description**: select a feature
|
||||
|
||||
**exclusive** (boolean, default: true) True means that all other features get
|
||||
deselectd
|
||||
|
||||
>Returns: layer (layer)
|
||||
|
||||
|
||||
The `.select()` method allows us to select a feature from the layer.
|
||||
A `featureselected` will be fired.
|
||||
|
||||
// add a feature to a layer
|
||||
var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
|
||||
// select the feature again
|
||||
feature.select();
|
||||
*/
|
||||
select: function(exclusive) {
|
||||
if (exclusive===undefined || exclusive===true) {
|
||||
this.layer.map.selectFeatureControl.unselectAll();
|
||||
}
|
||||
this.layer.map.selectFeatureControl.select(this.olFeature);
|
||||
},
|
||||
/**
|
||||
###*feature*.`unselect()`
|
||||
_version added 0.2.0_
|
||||
####**Description**: unselect a feature
|
||||
|
||||
>Returns: layer (layer)
|
||||
|
||||
|
||||
The `.unselect()` method allows us to unselect a feature from the layer.
|
||||
A `featureunselected` will be fired.
|
||||
|
||||
// add a feature to a layer
|
||||
var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
|
||||
// select the feature
|
||||
feature.select();
|
||||
// unselect the feature again
|
||||
feature.unselect();
|
||||
*/
|
||||
unselect: function() {
|
||||
this.layer.map.selectFeatureControl.unselect(this.olFeature);
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.mapQuery = function(options) {
|
||||
return this.each(function() {
|
||||
var instance = $.data(this, 'mapQuery');
|
||||
if (!instance) {
|
||||
$.data(this, 'mapQuery', new $.MapQuery.Map($(this), options));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$.extend($.MapQuery.Layer, {
|
||||
types: {
|
||||
/**
|
||||
###*layer* `{type:bing}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a Bing maps layer
|
||||
|
||||
* **view** a string ['road','hybrid','satellite'] to define which Bing maps
|
||||
layer to use (default road)
|
||||
* **key** Bing Maps API key for your application. Get you own at
|
||||
http://bingmapsportal.com/
|
||||
* **label** string with the name of the layer
|
||||
|
||||
|
||||
layers:[{
|
||||
type:'bing', //create a bing maps layer
|
||||
view:'satellite', //use the bing satellite layer
|
||||
key:'ArAGGPJ16xm0RX' //the Bing maps API key
|
||||
}]
|
||||
|
||||
*/
|
||||
bing: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.bing,
|
||||
options);
|
||||
var view = o.view;
|
||||
switch(view){
|
||||
case 'road':
|
||||
view = 'Road'; break;
|
||||
case 'hybrid':
|
||||
view = 'AerialWithLabels'; break;
|
||||
case 'satellite':
|
||||
view = 'Aerial'; break;
|
||||
}
|
||||
return {
|
||||
layer: new OpenLayers.Layer.Bing({type:view,key:o.key}),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
//Not sure this one is worth pursuing works with ecwp:// & jpip:// urls
|
||||
//See ../lib/NCSOpenLayersECWP.js
|
||||
ecwp: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.raster,
|
||||
options);
|
||||
return {
|
||||
layer: new OpenLayers.Layer.ECWP(o.label, o.url, o),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:google}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a Google maps layer
|
||||
|
||||
* **view** a string ['road','hybrid','satellite'] to define which Google maps
|
||||
layer to use (default road)
|
||||
* **label** string with the name of the layer
|
||||
|
||||
|
||||
*Note* you need to include the google maps v3 API in your application by adding
|
||||
`<script src="http://maps.google.com/maps/api/js?v=3.5&sensor=false"type="text/javascript"></script>`
|
||||
|
||||
|
||||
layers:[{
|
||||
type:'google', //create a google maps layer
|
||||
view:'hybrid' //use the google hybridlayer
|
||||
}]
|
||||
|
||||
*/
|
||||
google: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.google,
|
||||
options);
|
||||
var view = o.view;
|
||||
switch(view){
|
||||
case 'road':
|
||||
view = google.maps.MapTypeId.ROADMAP; break;
|
||||
case 'terrain':
|
||||
view = google.maps.MapTypeId.TERRAIN; break;
|
||||
case 'hybrid':
|
||||
view = google.maps.MapTypeId.HYBRID; break;
|
||||
case 'satellite':
|
||||
view = google.maps.MapTypeId.SATELLITE; break;
|
||||
}
|
||||
return {
|
||||
layer: new OpenLayers.Layer.Google({type:view}),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:vector}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a vector layer
|
||||
|
||||
* **label** string with the name of the layer
|
||||
|
||||
|
||||
layers:[{
|
||||
type:'vector' //create a vector layer
|
||||
}]
|
||||
|
||||
*/
|
||||
vector: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.vector,
|
||||
options);
|
||||
this.isVector = true;
|
||||
return {
|
||||
layer: new OpenLayers.Layer.Vector(o.label),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:json}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a JSON layer
|
||||
|
||||
* **url** a string pointing to the location of the JSON data
|
||||
* **strategies** a string ['bbox','cluster','filter','fixed','paging','refresh','save']
|
||||
stating which update strategy should be used (default fixed)
|
||||
(see also http://dev.openlayers.org/apidocs/files/OpenLayers/Strategy-js.html)
|
||||
* **projection** a string with the projection of the JSON data (default EPSG:4326)
|
||||
* **styleMap** {object} the style to be used to render the JSON data
|
||||
* **label** string with the name of the layer
|
||||
|
||||
|
||||
layers:[{
|
||||
type: 'JSON',
|
||||
url: 'data/reservate.json',
|
||||
label: 'reservate'
|
||||
}]
|
||||
|
||||
*/
|
||||
json: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.vector,
|
||||
options);
|
||||
this.isVector = true;
|
||||
var strategies = [];
|
||||
for (var i in o.strategies) {
|
||||
if(o.strategies.hasOwnProperty(i)) {
|
||||
switch(o.strategies[i].toLowerCase()) {
|
||||
case 'bbox':
|
||||
strategies.push(new OpenLayers.Strategy.BBOX());
|
||||
break;
|
||||
case 'cluster':
|
||||
strategies.push(new OpenLayers.Strategy.Cluster());
|
||||
break;
|
||||
case 'filter':
|
||||
strategies.push(new OpenLayers.Strategy.Filter());
|
||||
break;
|
||||
case 'fixed':
|
||||
strategies.push(new OpenLayers.Strategy.Fixed());
|
||||
break;
|
||||
case 'paging':
|
||||
strategies.push(new OpenLayers.Strategy.Paging());
|
||||
break;
|
||||
case 'refresh':
|
||||
strategies.push(new OpenLayers.Strategy.Refresh());
|
||||
break;
|
||||
case 'save':
|
||||
strategies.push(new OpenLayers.Strategy.Save());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
var protocol;
|
||||
|
||||
var params = {
|
||||
strategies: strategies,
|
||||
projection: o.projection || 'EPSG:4326',
|
||||
styleMap: o.styleMap
|
||||
};
|
||||
|
||||
if (o.url) {
|
||||
// only use JSONP if we use http(s)
|
||||
if (o.url.match(/^https?:\/\//)!==null &&
|
||||
!$.MapQuery.util.sameOrigin(o.url)) {
|
||||
protocol = 'Script';
|
||||
}
|
||||
else {
|
||||
protocol = 'HTTP';
|
||||
}
|
||||
params.protocol = new OpenLayers.Protocol[protocol]({
|
||||
url: o.url,
|
||||
format: new OpenLayers.Format.GeoJSON()
|
||||
});
|
||||
};
|
||||
|
||||
var layer = new OpenLayers.Layer.Vector(o.label, params);
|
||||
return {
|
||||
layer: layer,
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:osm}`
|
||||
_version added 0.1_
|
||||
####**Description**: create an OpenStreetMap layer
|
||||
|
||||
|
||||
* **label** string with the name of the layer
|
||||
* **url** A single URL (string) or an array of URLs to OSM-like server like
|
||||
Cloudmade
|
||||
* **attribution** A string to put some attribution on the map
|
||||
|
||||
layers:[{
|
||||
type: 'osm',
|
||||
url: [
|
||||
'http://a.tile.cloudmade.com/<yourapikey>/999/256/${z}/${x}/${y}.png',
|
||||
'http://b.tile.cloudmade.com/<yourapikey>/999/256/${z}/${x}/${y}.png',
|
||||
'http://c.tile.cloudmade.com/<yourapikey>/999/256/${z}/${x}/${y}.png'
|
||||
],
|
||||
attribution: "Data © 2009 <a href='http://openstreetmap.org/'>
|
||||
OpenStreetMap</a>. Rendering © 2009
|
||||
<a href='http://cloudmade.com'>CloudMade</a>."
|
||||
}]
|
||||
|
||||
*/
|
||||
osm: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.osm,
|
||||
options);
|
||||
var label = options.label || undefined;
|
||||
var url = options.url || undefined;
|
||||
return {
|
||||
layer: new OpenLayers.Layer.OSM(label, url, o),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:tms}`
|
||||
_version added 0.1_
|
||||
####**Description**: create an OpenStreetMap layer
|
||||
|
||||
|
||||
* **label** string with the name of the layer
|
||||
* **url** A single URL (string) or an array of URLs to the TMS end point
|
||||
* **layer** The identifier for the <TileMap> as advertised by the service.
|
||||
For example, if the service advertises a <TileMap> with ‘href=”http://tms.osgeo.org/1.0.0/vmap0”’,
|
||||
the layer property would be set to “vmap0”.
|
||||
* **format** The image format (default png)
|
||||
|
||||
layers:[{
|
||||
type: 'tms',
|
||||
url: 'http://tilecache.osgeo.org/wms-c/Basic.py/',
|
||||
layer: 'basic'
|
||||
}]
|
||||
|
||||
*/
|
||||
tms: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.tms,
|
||||
options);
|
||||
var label = options.label || undefined;
|
||||
var url = options.url || undefined;
|
||||
var params = {
|
||||
layername: o.layer,
|
||||
type: o.format
|
||||
};
|
||||
return {
|
||||
layer: new OpenLayers.Layer.TMS(label, url, params),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
/**
|
||||
###*layer* `{type:wms}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a WMS layer
|
||||
|
||||
* **url** a string pointing to the location of the WMS service
|
||||
* **layers** a string with the name of the WMS layer(s)
|
||||
* **format** a string with format of the WMS image (default image/jpeg)
|
||||
* **transparent** a boolean for requesting images with transparency
|
||||
* **label** string with the name of the layer
|
||||
* **wms_parameters** an hashtable of extra GetMap query string parameters and parameter values
|
||||
|
||||
|
||||
layers:[{
|
||||
type:'wms',
|
||||
url:'http://vmap0.tiles.osgeo.org/wms/vmap0',
|
||||
layers:'basic'
|
||||
}]
|
||||
|
||||
*/
|
||||
wms: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.raster,
|
||||
options);
|
||||
var params = {
|
||||
layers: o.layers,
|
||||
transparent: o.transparent,
|
||||
format: o.format
|
||||
};
|
||||
if(typeof o.wms_parameters != "undefined"){
|
||||
params = $.extend(params, o.wms_parameters);
|
||||
}
|
||||
return {
|
||||
layer: new OpenLayers.Layer.WMS(o.label, o.url, params, o),
|
||||
options: o
|
||||
};
|
||||
},
|
||||
//TODO complete this documentation
|
||||
/**
|
||||
###*layer* `{type:wmts}`
|
||||
_version added 0.1_
|
||||
####**Description**: create a WMTS (tiling) layer
|
||||
|
||||
* **url** a string pointing to the location of the WMTS service
|
||||
* **layer** a string with the name of the WMTS layer
|
||||
* **matrixSet** a string with one of the advertised matrix set identifiers
|
||||
* **style** a string with one of the advertised layer styles
|
||||
* **label** string with the name of the layer
|
||||
|
||||
|
||||
layers:[{
|
||||
type:'wmts'
|
||||
}]
|
||||
|
||||
*/
|
||||
wmts: function(options) {
|
||||
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
|
||||
$.fn.mapQuery.defaults.layer.wmts);
|
||||
//smo 20110614 the maxExtent is set here with OpenLayers.Bounds
|
||||
if (options.sphericalMercator===true) {
|
||||
$.extend(true, o, {
|
||||
maxExtent: new OpenLayers.Bounds(
|
||||
-128 * 156543.0339, -128 * 156543.0339,
|
||||
128 * 156543.0339, 128 * 156543.0339),
|
||||
maxResolution: 156543.0339,
|
||||
numZoomLevels: 19,
|
||||
projection: 'EPSG:900913',
|
||||
units: 'm'
|
||||
});
|
||||
}
|
||||
$.extend(true, o, options);
|
||||
// use by default all options that were passed in for the final
|
||||
// openlayers layer consrtuctor
|
||||
var params = $.extend(true, {}, o);
|
||||
|
||||
// remove trailing slash
|
||||
if (params.url.charAt(params.url.length-1)==='/') {
|
||||
params.url = params.url.slice(0, params.url.length-1);
|
||||
}
|
||||
// if no options that influence the URL where set, extract them
|
||||
// from the given URL
|
||||
if (o.layer===undefined && o.matrixSet===undefined &&
|
||||
o.style===undefined) {
|
||||
var url = $.MapQuery.util.parseUri(params.url);
|
||||
var urlParts = url.path.split('/');
|
||||
var wmtsPath = urlParts.slice(urlParts.length-3);
|
||||
params.url = url.protocol ? url.protocol + '//' : '';
|
||||
params.url += url.authority +
|
||||
// remove WMTS version (1.0.0) as well
|
||||
urlParts.slice(0, urlParts.length-4).join('/');
|
||||
params.layer = wmtsPath[0];
|
||||
params.style = wmtsPath[1];
|
||||
params.matrixSet = wmtsPath[2];
|
||||
}
|
||||
return {
|
||||
layer: new OpenLayers.Layer.WMTS(params),
|
||||
options: o
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// default options for the map and layers
|
||||
$.fn.mapQuery.defaults = {
|
||||
// The controls for the map are per instance, therefore it need to
|
||||
// be an function that can be initiated per instance
|
||||
map: function() {
|
||||
return {
|
||||
// Remove quirky moveTo behavior, probably not a good idea in the
|
||||
// long run
|
||||
allOverlays: true,
|
||||
controls: [
|
||||
// Since OL2.11 the Navigation control includes touch navigation as well
|
||||
new OpenLayers.Control.Navigation({
|
||||
documentDrag: true,
|
||||
dragPanOptions: {
|
||||
interval: 1,
|
||||
enableKinetic: true
|
||||
}
|
||||
}),
|
||||
new OpenLayers.Control.ArgParser(),
|
||||
new OpenLayers.Control.Attribution(),
|
||||
new OpenLayers.Control.KeyboardDefaults()
|
||||
],
|
||||
format: 'image/png',
|
||||
maxExtent: [-128*156543.0339,
|
||||
-128*156543.0339,
|
||||
128*156543.0339,
|
||||
128*156543.0339],
|
||||
maxResolution: 156543.0339,
|
||||
numZoomLevels: 19,
|
||||
projection: 'EPSG:900913',
|
||||
displayProjection: 'EPSG:4326',
|
||||
zoomToMaxExtent: true,
|
||||
units: 'm'
|
||||
};
|
||||
},
|
||||
layer: {
|
||||
all: {
|
||||
isBaseLayer: false,
|
||||
//in general it is kinda pointless to load tiles outside a maxextent
|
||||
displayOutsideMaxExtent: false
|
||||
},
|
||||
bing: {
|
||||
transitionEffect: 'resize',
|
||||
view: 'road',
|
||||
sphericalMercator: true
|
||||
},
|
||||
google: {
|
||||
transitionEffect: 'resize',
|
||||
view: 'road',
|
||||
sphericalMercator: true
|
||||
},
|
||||
osm: {
|
||||
transitionEffect: 'resize',
|
||||
sphericalMercator: true
|
||||
},
|
||||
tms: {
|
||||
transitionEffect: 'resize',
|
||||
format: 'png'
|
||||
},
|
||||
raster: {
|
||||
// options for raster layers
|
||||
transparent: true
|
||||
},
|
||||
vector: {
|
||||
// options for vector layers
|
||||
strategies: ['bbox']
|
||||
},
|
||||
wmts: {
|
||||
format: 'image/jpeg',
|
||||
requestEncoding: 'REST',
|
||||
sphericalMercator: false
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Some utility functions
|
||||
|
||||
$.MapQuery.util = {};
|
||||
// http://blog.stevenlevithan.com/archives/parseuri (2010-12-18)
|
||||
// parseUri 1.2.2
|
||||
// (c) Steven Levithan <stevenlevithan.com>
|
||||
// MIT License
|
||||
// Edited to include the colon in the protocol, just like it is
|
||||
// with window.location.protocol
|
||||
$.MapQuery.util.parseUri = function (str) {
|
||||
var o = $.MapQuery.util.parseUri.options,
|
||||
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
|
||||
uri = {},
|
||||
i = 14;
|
||||
|
||||
while (i--) {uri[o.key[i]] = m[i] || "";}
|
||||
|
||||
uri[o.q.name] = {};
|
||||
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
|
||||
if ($1) {uri[o.q.name][$1] = $2;}
|
||||
});
|
||||
|
||||
return uri;
|
||||
};
|
||||
$.MapQuery.util.parseUri.options = {
|
||||
strictMode: false,
|
||||
key: ["source", "protocol", "authority", "userInfo", "user",
|
||||
"password", "host", "port", "relative", "path", "directory",
|
||||
"file", "query", "anchor"],
|
||||
q: {
|
||||
name: "queryKey",
|
||||
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
|
||||
},
|
||||
parser: {
|
||||
strict: /^(?:([^:\/?#]+:))?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
||||
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+:))?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
|
||||
}
|
||||
};
|
||||
// Checks whether a URL conforms to the same origin policy or not
|
||||
$.MapQuery.util.sameOrigin = function(url) {
|
||||
var parsed = $.MapQuery.util.parseUri(url);
|
||||
parsed.protocol = parsed.protocol || 'file:';
|
||||
parsed.port = parsed.port || "80";
|
||||
|
||||
var current = {
|
||||
domain: document.domain,
|
||||
port: window.location.port,
|
||||
protocol: window.location.protocol
|
||||
};
|
||||
current.port = current.port || "80";
|
||||
|
||||
return parsed.protocol===current.protocol &&
|
||||
parsed.port===current.port &&
|
||||
// the current domain is a suffix of the parsed domain
|
||||
parsed.host.match(current.domain + '$')!==null;
|
||||
};
|
||||
})(jQuery);
|
87
view/theme/diabook/js/jquery.mapquery.legend.js
Normal file
87
view/theme/diabook/js/jquery.mapquery.legend.js
Normal file
|
@ -0,0 +1,87 @@
|
|||
/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
|
||||
* full list of contributors). Published under the MIT license.
|
||||
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
#jquery.mapquery.legend.js
|
||||
A plugin on mapquery.core to add a legend to a layer. It will check if the layer
|
||||
is within a valid extent and zoom range. And if not will return an error message.
|
||||
*/
|
||||
|
||||
(function($, MQ) {
|
||||
$.extend( $.fn.mapQuery.defaults.layer.all, {
|
||||
legend: {
|
||||
url: '',
|
||||
msg: ''
|
||||
}
|
||||
});
|
||||
//possible error messages to display in the legend
|
||||
LEGEND_ERRORS= ['E_ZOOMOUT', 'E_ZOOMIN', 'E_OUTSIDEBOX'];
|
||||
$.extend(MQ.Layer.prototype, {
|
||||
/**
|
||||
###**layer**.`legend([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: get/set the legend of a layer
|
||||
|
||||
**options** url:url the url to the legend image
|
||||
|
||||
>Returns: {url:url, msg:'E\_ZOOMOUT' | 'E\_ZOOMIN' | 'E\_OUTSIDEBOX' | ''}
|
||||
|
||||
|
||||
The `.legend()` function allows us to attach a legend image to a layer. It will
|
||||
also check if the layer is not visible due to wrong extent or zoom level.
|
||||
It will return an error message which can be used to notify the user.
|
||||
|
||||
|
||||
var legend = layer.legend(); //get the current legend
|
||||
//set the legend url to legendimage.png
|
||||
layer.legend({url:'legendimage.png'})
|
||||
|
||||
*/
|
||||
//get/set the legend object
|
||||
legend: function(options) {
|
||||
//get the legend object
|
||||
var center = this.map.center();
|
||||
if (arguments.length===0) {
|
||||
this._checkZoom(center);
|
||||
//if zoom = ok, check box
|
||||
if(this.options.legend.msg==''){
|
||||
this._checkBox(center);
|
||||
}
|
||||
return this.options.legend;
|
||||
}
|
||||
//set the legend url
|
||||
if (options.url!==undefined) {
|
||||
this.options.legend.url = options.url;
|
||||
return this.options.legend;
|
||||
}
|
||||
},
|
||||
//Check if the layer has a maximum box set and if the current box
|
||||
//is outside these settings, set the legend.msg accordingly
|
||||
_checkBox: function(center){
|
||||
var maxExtent = this.options.maxExtent;
|
||||
if(maxExtent!==undefined) {
|
||||
var mapBounds = new OpenLayers.Bounds(
|
||||
center.box[0],center.box[1],center.box[2],center.box[3]);
|
||||
var layerBounds = new OpenLayers.Bounds(
|
||||
maxExtent[0],maxExtent[1],maxExtent[2],maxExtent[3]);
|
||||
var inside = layerBounds.containsBounds(mapBounds, true);
|
||||
this.options.legend.msg = inside?'':LEGEND_ERRORS[2];
|
||||
}
|
||||
},
|
||||
//Check if the layer has a minimum or maximum zoom set and if the
|
||||
//current zoom is outside these settings, set the legend.msg accordingly
|
||||
_checkZoom: function(center){
|
||||
var zoom = center.zoom;
|
||||
var maxZoom = this.options.maxZoom;
|
||||
var minZoom = this.options.minZoom;
|
||||
this.options.legend.msg=(
|
||||
maxZoom!==undefined&&maxZoom<zoom)? LEGEND_ERRORS[0]:'';
|
||||
this.options.legend.msg=(
|
||||
minZoom!==undefined&&minZoom>zoom)? LEGEND_ERRORS[1]:'';
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery, $.MapQuery);
|
310
view/theme/diabook/js/jquery.mapquery.mqLayerManager.js
Normal file
310
view/theme/diabook/js/jquery.mapquery.mqLayerManager.js
Normal file
|
@ -0,0 +1,310 @@
|
|||
/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
|
||||
* full list of contributors). Published under the MIT license.
|
||||
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
#jquery.mapquery.mqLayerManager.js
|
||||
The file containing the mqLayerManager Widget
|
||||
|
||||
### *$('selector')*.`mqLayerManager([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: create a widget to manage layers
|
||||
|
||||
+ **options**:
|
||||
- **map**: the mapquery instance
|
||||
- **title**: Title that will be displayed at the top of the
|
||||
layer manager (default: Layer Manager)
|
||||
|
||||
|
||||
>Returns: widget
|
||||
|
||||
>Requires: jquery.mapquery.legend.js
|
||||
|
||||
|
||||
The mqLayerManager allows us to control the order, opacity and visibility
|
||||
of layers. We can also remove layers. It also shows the legend of the layer if
|
||||
available and the error messages provided by the legend plugin. It listens to
|
||||
layerchange event for order, transparancy and opacity changes. It listens to
|
||||
addlayer and removelayer events to keep track which layers are on the map.
|
||||
|
||||
|
||||
$('#layermanager').mqLayerManager({map:'#map'});
|
||||
|
||||
|
||||
*/
|
||||
(function($) {
|
||||
$.template('mqLayerManager',
|
||||
'<div class="mq-layermanager ui-widget-content ">'+
|
||||
'</div>');
|
||||
|
||||
$.template('mqLayerManagerElement',
|
||||
'<div class="mq-layermanager-element ui-widget-content ui-corner-all" id="mq-layermanager-element-${id}">'+
|
||||
'<div class="mq-layermanager-element-header ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">'+
|
||||
'<span class="mq-layermanager-label ui-dialog-title">${label}</span>'+
|
||||
'<a class="ui-dialog-titlebar-close ui-corner-all" href="#" role="button">'+
|
||||
'<span class="ui-icon ui-icon-closethick">close</span></a></div>'+
|
||||
'<div class="mq-layermanager-element-content">'+
|
||||
'<div class="mq-layermanager-element-visibility">'+
|
||||
'<input type="checkbox" class="mq-layermanager-element-vischeckbox" id="${id}-visibility" {{if visible}}checked="${visible}"{{/if}} />'+
|
||||
'<div class="mq-layermanager-element-slider-container">'+
|
||||
'<div class="mq-layermanager-element-slider"></div></div>'+
|
||||
'</div>'+
|
||||
'<div class="mq-layermanager-element-legend">'+
|
||||
'{{if imgUrl}}'+
|
||||
'<img src="${imgUrl}" style="opacity:${opacity}"/>'+
|
||||
'{{/if}}'+
|
||||
'{{if errMsg}}'+
|
||||
'${errMsg}'+
|
||||
'{{/if}}'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'</div>');
|
||||
|
||||
$.widget("mapQuery.mqLayerManager", {
|
||||
options: {
|
||||
// The MapQuery instance
|
||||
map: undefined,
|
||||
|
||||
// Title that will be displayed at the top of the popup
|
||||
title: "Layer Manager"
|
||||
},
|
||||
_create: function() {
|
||||
var map;
|
||||
var zoom;
|
||||
var numzoomlevels;
|
||||
var self = this;
|
||||
var element = this.element;
|
||||
|
||||
//get the mapquery object
|
||||
map = $(this.options.map).data('mapQuery');
|
||||
|
||||
this.element.addClass('ui-widget ui-helper-clearfix ' +
|
||||
'ui-corner-all');
|
||||
|
||||
var lmElement = $.tmpl('mqLayerManager').appendTo(element);
|
||||
element.find('.ui-icon-closethick').button();
|
||||
|
||||
lmElement.sortable({
|
||||
axis:'y',
|
||||
handle: '.mq-layermanager-element-header',
|
||||
update: function(event, ui) {
|
||||
var layerNodes = ui.item.siblings().andSelf();
|
||||
var num = layerNodes.length-1;
|
||||
layerNodes.each(function(i) {
|
||||
var layer = $(this).data('layer');
|
||||
var pos = num-i;
|
||||
self._position(layer, pos);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//these layers are already added to the map as such won't trigger
|
||||
//and event, we call the draw function directly
|
||||
$.each(map.layers().reverse(), function(){
|
||||
self._layerAdded(lmElement, this);
|
||||
});
|
||||
|
||||
element.delegate('.mq-layermanager-element-vischeckbox',
|
||||
'change',function() {
|
||||
var checkbox = $(this);
|
||||
var element = checkbox.parents('.mq-layermanager-element');
|
||||
var layer = element.data('layer');
|
||||
var self = element.data('self');
|
||||
self._visible(layer,checkbox.is(':checked'));
|
||||
});
|
||||
|
||||
element.delegate('.ui-icon-closethick', 'click', function() {
|
||||
var control = $(this).parents('.mq-layermanager-element');
|
||||
self._remove(control.data('layer'));
|
||||
});
|
||||
|
||||
//binding events
|
||||
map.bind("addlayer",
|
||||
{widget:self,control:lmElement},
|
||||
self._onLayerAdd);
|
||||
|
||||
map.bind("removelayer",
|
||||
{widget:self,control:lmElement},
|
||||
self._onLayerRemove);
|
||||
|
||||
map.bind("changelayer",
|
||||
{widget:self,map:map,control:lmElement},
|
||||
self._onLayerChange);
|
||||
|
||||
map.bind("moveend",
|
||||
{widget:self,map:map,control:lmElement},
|
||||
self._onMoveEnd);
|
||||
},
|
||||
_destroy: function() {
|
||||
this.element.removeClass(' ui-widget ui-helper-clearfix ' +
|
||||
'ui-corner-all')
|
||||
.empty();
|
||||
},
|
||||
//functions that actually change things on the map
|
||||
//call these from within the widget to do stuff on the map
|
||||
//their actions will trigger events on the map and in return
|
||||
//will trigger the _layer* functions
|
||||
_add: function(map,layer) {
|
||||
map.layers(layer);
|
||||
},
|
||||
|
||||
_remove: function(layer) {
|
||||
layer.remove();
|
||||
},
|
||||
|
||||
_position: function(layer, pos) {
|
||||
layer.position(pos);
|
||||
},
|
||||
|
||||
_visible: function(layer, vis) {
|
||||
layer.visible(vis);
|
||||
},
|
||||
|
||||
_opacity: function(layer,opac) {
|
||||
layer.opacity(opac);
|
||||
},
|
||||
|
||||
//functions that change the widget
|
||||
_layerAdded: function(widget, layer) {
|
||||
var self = this;
|
||||
var error = layer.legend().msg;
|
||||
var url;
|
||||
switch(error){
|
||||
case '':
|
||||
url =layer.legend().url;
|
||||
if(url==''){error='No legend for this layer';}
|
||||
break;
|
||||
case 'E_ZOOMOUT':
|
||||
error = 'Please zoom out to see this layer';
|
||||
break;
|
||||
case 'E_ZOOMIN':
|
||||
error = 'Please zoom in to see this layer';
|
||||
break;
|
||||
case 'E_OUTSIDEBOX':
|
||||
error = 'This layer is outside the current view';
|
||||
break;
|
||||
}
|
||||
|
||||
var layerElement = $.tmpl('mqLayerManagerElement',{
|
||||
id: layer.id,
|
||||
label: layer.label,
|
||||
position: layer.position(),
|
||||
visible: layer.visible(),
|
||||
imgUrl: url,
|
||||
opacity: layer.visible()?layer.opacity():0,
|
||||
errMsg: error
|
||||
})
|
||||
// save layer layer in the DOM, so we can easily
|
||||
// hide/show/delete the layer with live events
|
||||
.data('layer', layer)
|
||||
.data('self',self)
|
||||
.prependTo(widget);
|
||||
|
||||
$(".mq-layermanager-element-slider", layerElement).slider({
|
||||
max: 100,
|
||||
step: 1,
|
||||
value: layer.visible()?layer.opacity()*100:0,
|
||||
slide: function(event, ui) {
|
||||
var layer = layerElement.data('layer');
|
||||
var self = layerElement.data('self');
|
||||
self._opacity(layer,ui.value/100);
|
||||
},
|
||||
//using the slide event to check for the checkbox often gives errors.
|
||||
change: function(event, ui) {
|
||||
var layer = layerElement.data('layer');
|
||||
var self = layerElement.data('self');
|
||||
if(ui.value>=0.01) {
|
||||
if(!layer.visible()){layer.visible(true);}
|
||||
}
|
||||
if(ui.value<0.01) {
|
||||
if(layer.visible()){layer.visible(false);}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_layerRemoved: function(widget, id) {
|
||||
var control = $("#mq-layermanager-element-"+id);
|
||||
control.fadeOut(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
},
|
||||
|
||||
_layerPosition: function(widget, layer) {
|
||||
var layerNodes = widget.element.find('.mq-layermanager-element');
|
||||
var num = layerNodes.length-1;
|
||||
var tmpNodes = [];
|
||||
tmpNodes.length = layerNodes.length;
|
||||
layerNodes.each(function() {
|
||||
var layer = $(this).data('layer');
|
||||
var pos = num-layer.position();
|
||||
tmpNodes[pos]= this;
|
||||
});
|
||||
for (i=0;i<tmpNodes.length;i++) {
|
||||
layerNodes.parent().append(tmpNodes[i]);
|
||||
}
|
||||
},
|
||||
|
||||
_layerVisible: function(widget, layer) {
|
||||
var layerElement =
|
||||
widget.element.find('#mq-layermanager-element-'+layer.id);
|
||||
var checkbox =
|
||||
layerElement.find('.mq-layermanager-element-vischeckbox');
|
||||
checkbox[0].checked = layer.visible();
|
||||
//update the opacity slider as well
|
||||
var slider = layerElement.find('.mq-layermanager-element-slider');
|
||||
var value = layer.visible()?layer.opacity()*100: 0;
|
||||
slider.slider('value',value);
|
||||
|
||||
//update legend image
|
||||
layerElement.find('.mq-layermanager-element-legend img').css(
|
||||
{visibility:layer.visible()?true:'hidden'});
|
||||
},
|
||||
|
||||
_layerOpacity: function(widget, layer) {
|
||||
var layerElement = widget.element.find(
|
||||
'#mq-layermanager-element-'+layer.id);
|
||||
var slider = layerElement.find(
|
||||
'.mq-layermanager-element-slider');
|
||||
slider.slider('value',layer.opacity()*100);
|
||||
//update legend image
|
||||
layerElement.find(
|
||||
'.mq-layermanager-element-legend img').css(
|
||||
{opacity:layer.opacity()});
|
||||
},
|
||||
|
||||
_moveEnd: function (widget,lmElement,map) {
|
||||
lmElement.empty();
|
||||
$.each(map.layers().reverse(), function(){
|
||||
widget._layerAdded(lmElement, this);
|
||||
});
|
||||
},
|
||||
|
||||
//functions bind to the map events
|
||||
_onLayerAdd: function(evt, layer) {
|
||||
evt.data.widget._layerAdded(evt.data.control,layer);
|
||||
},
|
||||
|
||||
_onLayerRemove: function(evt, layer) {
|
||||
evt.data.widget._layerRemoved(evt.data.control,layer.id);
|
||||
},
|
||||
|
||||
_onLayerChange: function(evt, layer, property) {
|
||||
switch(property) {
|
||||
case 'opacity':
|
||||
evt.data.widget._layerOpacity(evt.data.widget,layer);
|
||||
break;
|
||||
case 'position':
|
||||
evt.data.widget._layerPosition(evt.data.widget,layer);
|
||||
break;
|
||||
case 'visibility':
|
||||
evt.data.widget._layerVisible(evt.data.widget,layer);
|
||||
break;
|
||||
}
|
||||
},
|
||||
_onMoveEnd: function(evt) {
|
||||
evt.data.widget._moveEnd(evt.data.widget,evt.data.control,evt.data.map);
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
92
view/theme/diabook/js/jquery.mapquery.mqMousePosition.js
Normal file
92
view/theme/diabook/js/jquery.mapquery.mqMousePosition.js
Normal file
|
@ -0,0 +1,92 @@
|
|||
/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
|
||||
* full list of contributors). Published under the MIT license.
|
||||
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
#jquery.mapquery.mqMousePosition.js
|
||||
The file containing the mqMousePosition Widget
|
||||
|
||||
### *$('selector')*.`mqMousePosition([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: create a widget to show the location under the mouse pointer
|
||||
|
||||
+ **options**
|
||||
- **map**: the mapquery instance
|
||||
- **precision**: the number of decimals (default 2)
|
||||
- **x**: the label for the x-coordinate (default x)
|
||||
- **y**: the label for the y-coordinate (default y)
|
||||
|
||||
|
||||
>Returns: widget
|
||||
|
||||
|
||||
The mqMousePosition allows us to show the coordinates under the mouse pointer
|
||||
|
||||
|
||||
$('#mousepointer').mqMousePointer({
|
||||
map: '#map'
|
||||
});
|
||||
|
||||
*/
|
||||
(function($) {
|
||||
$.template('mqMousePosition',
|
||||
'<div class="mq-mouseposition ui-widget ui-helper-clearfix ">'+
|
||||
'<span class="ui-widget-content ui-helper-clearfix ui-corner-all ui-corner-all">'+
|
||||
'<div id="mq-mouseposition-x" class="mq-mouseposition-coordinate">'+
|
||||
'</div><div id="mq-mouseposition-y" class="mq-mouseposition-coordinate">'+
|
||||
'</div></div></span>');
|
||||
|
||||
$.widget("mapQuery.mqMousePosition", {
|
||||
options: {
|
||||
// The MapQuery instance
|
||||
map: undefined,
|
||||
|
||||
// The number of decimals for the coordinates
|
||||
// default: 2
|
||||
// TODO: JCB20110630 use dynamic precision based on the pixel
|
||||
// resolution, no need to configure precision
|
||||
precision: 2,
|
||||
|
||||
// The label of the x-value
|
||||
// default: 'x'
|
||||
x: 'x',
|
||||
// The label of the y-value
|
||||
// default: 'y'
|
||||
y: 'y'
|
||||
|
||||
},
|
||||
_create: function() {
|
||||
//get the mapquery object
|
||||
this.map = $(this.options.map).data('mapQuery');
|
||||
|
||||
this.map.element.bind('mousemove', {widget: this}, this._onMousemove);
|
||||
$.tmpl('mqMousePosition', {}).appendTo(this.element);
|
||||
|
||||
},
|
||||
_destroy: function() {
|
||||
this.element.removeClass('ui-widget ui-helper-clearfix ' +
|
||||
'ui-corner-all')
|
||||
.empty();
|
||||
},
|
||||
_onMousemove: function(evt) {
|
||||
var self = evt.data.widget;
|
||||
var x = evt.pageX;
|
||||
var y = evt.pageY;
|
||||
var mapProjection = new OpenLayers.Projection(self.map.projection);
|
||||
var displayProjection = new OpenLayers.Projection(
|
||||
self.map.displayProjection);
|
||||
var pos = self.map.olMap.getLonLatFromLayerPx(
|
||||
new OpenLayers.Pixel(x, y));
|
||||
//if the coordinates should be displayed in something else,
|
||||
//set them via the map displayProjection option
|
||||
if(!mapProjection.equals(self.map.displayProjection)) {
|
||||
pos = pos.transform(mapProjection, displayProjection);
|
||||
}
|
||||
$("#id_diabook_ELPosX", document.element).val(
|
||||
self.options.x + pos.lon.toFixed(self.options.precision));
|
||||
$("#id_diabook_ELPosY", document.element).val(
|
||||
self.options.y + pos.lat.toFixed(self.options.precision));
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
85
view/theme/diabook/js/jquery.mapquery.mqZoomSlider.js
Normal file
85
view/theme/diabook/js/jquery.mapquery.mqZoomSlider.js
Normal file
|
@ -0,0 +1,85 @@
|
|||
/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
|
||||
* full list of contributors). Published under the MIT license.
|
||||
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
|
||||
* full text of the license. */
|
||||
|
||||
|
||||
/**
|
||||
#jquery.mapquery.mqZoomSlider.js
|
||||
The file containing the mqZoomSlider Widget
|
||||
|
||||
### *$('selector')*.`mqZoomSlider([options])`
|
||||
_version added 0.1_
|
||||
####**Description**: create a widget to show a zoom slider
|
||||
|
||||
+ **options**:
|
||||
- **map**: the mapquery instance
|
||||
|
||||
>Returns: widget
|
||||
|
||||
|
||||
The mqZoomSlider widget allows us to display a vertical zoom slider.
|
||||
|
||||
|
||||
$('#zoomslider').mqZoomSlider({
|
||||
map: '#map'
|
||||
});
|
||||
|
||||
*/
|
||||
(function($) {
|
||||
$.template('mqZoomSlider',
|
||||
'<div class="mq-zoomslider ui-widget ui-helper-clearfix ">'+
|
||||
'<div class="mq-zoomslider-slider"></div>'+
|
||||
'</div>');
|
||||
|
||||
$.widget("mapQuery.mqZoomSlider", {
|
||||
options: {
|
||||
// The MapQuery instance
|
||||
map: undefined
|
||||
|
||||
},
|
||||
_create: function() {
|
||||
var map;
|
||||
var zoom;
|
||||
var numzoomlevels;
|
||||
var self = this;
|
||||
var element = this.element;
|
||||
|
||||
//get the mapquery object
|
||||
map = $(this.options.map).data('mapQuery');
|
||||
|
||||
$.tmpl('mqZoomSlider').appendTo(element);
|
||||
|
||||
numzoomlevels = map.options.numZoomLevels;
|
||||
$(".mq-zoomslider-slider", element).slider({
|
||||
max: numzoomlevels,
|
||||
min:2,
|
||||
orientation: 'vertical',
|
||||
step: 1,
|
||||
value: numzoomlevels - map.center().zoom,
|
||||
slide: function(event, ui) {
|
||||
map.center({zoom:numzoomlevels-ui.value});
|
||||
},
|
||||
change: function(event, ui) {
|
||||
map.center({zoom:numzoomlevels-ui.value});
|
||||
}
|
||||
});
|
||||
map.bind("zoomend",
|
||||
{widget:self,map:map,control:element},
|
||||
self._onZoomEnd);
|
||||
|
||||
},
|
||||
_destroy: function() {
|
||||
this.element.removeClass(' ui-widget ui-helper-clearfix ' +
|
||||
'ui-corner-all')
|
||||
.empty();
|
||||
},
|
||||
_zoomEnd: function (element,map) {
|
||||
var slider = element.find('.mq-zoomslider-slider');
|
||||
slider.slider('value',map.options.numZoomLevels-map.center().zoom);
|
||||
},
|
||||
_onZoomEnd: function(evt) {
|
||||
evt.data.widget._zoomEnd(evt.data.control,evt.data.map);
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
84
view/theme/diabook/js/jquery.mousewheel.js
Normal file
84
view/theme/diabook/js/jquery.mousewheel.js
Normal file
|
@ -0,0 +1,84 @@
|
|||
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
||||
* Licensed under the MIT License (LICENSE.txt).
|
||||
*
|
||||
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
||||
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
||||
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
||||
*
|
||||
* Version: 3.0.6
|
||||
*
|
||||
* Requires: 1.2.2+
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
var types = ['DOMMouseScroll', 'mousewheel'];
|
||||
|
||||
if ($.event.fixHooks) {
|
||||
for ( var i=types.length; i; ) {
|
||||
$.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
|
||||
}
|
||||
}
|
||||
|
||||
$.event.special.mousewheel = {
|
||||
setup: function() {
|
||||
if ( this.addEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.addEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = handler;
|
||||
}
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
if ( this.removeEventListener ) {
|
||||
for ( var i=types.length; i; ) {
|
||||
this.removeEventListener( types[--i], handler, false );
|
||||
}
|
||||
} else {
|
||||
this.onmousewheel = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.extend({
|
||||
mousewheel: function(fn) {
|
||||
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
|
||||
},
|
||||
|
||||
unmousewheel: function(fn) {
|
||||
return this.unbind("mousewheel", fn);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function handler(event) {
|
||||
var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
|
||||
event = $.event.fix(orgEvent);
|
||||
event.type = "mousewheel";
|
||||
|
||||
// Old school scrollwheel delta
|
||||
if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
|
||||
if ( orgEvent.detail ) { delta = -orgEvent.detail/3; }
|
||||
|
||||
// New school multidimensional scroll (touchpads) deltas
|
||||
deltaY = delta;
|
||||
|
||||
// Gecko
|
||||
if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
|
||||
deltaY = 0;
|
||||
deltaX = -1*delta;
|
||||
}
|
||||
|
||||
// Webkit
|
||||
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
|
||||
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
|
||||
|
||||
// Add event and delta to the front of the arguments
|
||||
args.unshift(event, delta, deltaX, deltaY);
|
||||
|
||||
return ($.event.dispatch || $.event.handle).apply(this, args);
|
||||
}
|
||||
|
||||
})(jQuery);
|
486
view/theme/diabook/js/jquery.tmpl.js
Normal file
486
view/theme/diabook/js/jquery.tmpl.js
Normal file
|
@ -0,0 +1,486 @@
|
|||
/*
|
||||
* jQuery Templating Plugin
|
||||
* Copyright 2010, John Resig
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
*/
|
||||
(function( jQuery, undefined ){
|
||||
var oldManip = jQuery.fn.domManip, tmplItmAtt = "_tmplitem", htmlExpr = /^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,
|
||||
newTmplItems = {}, wrappedItems = {}, appendToTmplItems, topTmplItem = { key: 0, data: {} }, itemKey = 0, cloneIndex = 0, stack = [];
|
||||
|
||||
function newTmplItem( options, parentItem, fn, data ) {
|
||||
// Returns a template item data structure for a new rendered instance of a template (a 'template item').
|
||||
// The content field is a hierarchical array of strings and nested items (to be
|
||||
// removed and replaced by nodes field of dom elements, once inserted in DOM).
|
||||
var newItem = {
|
||||
data: data || (parentItem ? parentItem.data : {}),
|
||||
_wrap: parentItem ? parentItem._wrap : null,
|
||||
tmpl: null,
|
||||
parent: parentItem || null,
|
||||
nodes: [],
|
||||
calls: tiCalls,
|
||||
nest: tiNest,
|
||||
wrap: tiWrap,
|
||||
html: tiHtml,
|
||||
update: tiUpdate
|
||||
};
|
||||
if ( options ) {
|
||||
jQuery.extend( newItem, options, { nodes: [], parent: parentItem } );
|
||||
}
|
||||
if ( fn ) {
|
||||
// Build the hierarchical content to be used during insertion into DOM
|
||||
newItem.tmpl = fn;
|
||||
newItem._ctnt = newItem._ctnt || newItem.tmpl( jQuery, newItem );
|
||||
newItem.key = ++itemKey;
|
||||
// Keep track of new template item, until it is stored as jQuery Data on DOM element
|
||||
(stack.length ? wrappedItems : newTmplItems)[itemKey] = newItem;
|
||||
}
|
||||
return newItem;
|
||||
}
|
||||
|
||||
// Override appendTo etc., in order to provide support for targeting multiple elements. (This code would disappear if integrated in jquery core).
|
||||
jQuery.each({
|
||||
appendTo: "append",
|
||||
prependTo: "prepend",
|
||||
insertBefore: "before",
|
||||
insertAfter: "after",
|
||||
replaceAll: "replaceWith"
|
||||
}, function( name, original ) {
|
||||
jQuery.fn[ name ] = function( selector ) {
|
||||
var ret = [], insert = jQuery( selector ), elems, i, l, tmplItems,
|
||||
parent = this.length === 1 && this[0].parentNode;
|
||||
|
||||
appendToTmplItems = newTmplItems || {};
|
||||
if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
|
||||
insert[ original ]( this[0] );
|
||||
ret = this;
|
||||
} else {
|
||||
for ( i = 0, l = insert.length; i < l; i++ ) {
|
||||
cloneIndex = i;
|
||||
elems = (i > 0 ? this.clone(true) : this).get();
|
||||
jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
|
||||
ret = ret.concat( elems );
|
||||
}
|
||||
cloneIndex = 0;
|
||||
ret = this.pushStack( ret, name, insert.selector );
|
||||
}
|
||||
tmplItems = appendToTmplItems;
|
||||
appendToTmplItems = null;
|
||||
jQuery.tmpl.complete( tmplItems );
|
||||
return ret;
|
||||
};
|
||||
});
|
||||
|
||||
jQuery.fn.extend({
|
||||
// Use first wrapped element as template markup.
|
||||
// Return wrapped set of template items, obtained by rendering template against data.
|
||||
tmpl: function( data, options, parentItem ) {
|
||||
return jQuery.tmpl( this[0], data, options, parentItem );
|
||||
},
|
||||
|
||||
// Find which rendered template item the first wrapped DOM element belongs to
|
||||
tmplItem: function() {
|
||||
return jQuery.tmplItem( this[0] );
|
||||
},
|
||||
|
||||
// Consider the first wrapped element as a template declaration, and get the compiled template or store it as a named template.
|
||||
template: function( name ) {
|
||||
return jQuery.template( name, this[0] );
|
||||
},
|
||||
|
||||
domManip: function( args, table, callback, options ) {
|
||||
// This appears to be a bug in the appendTo, etc. implementation
|
||||
// it should be doing .call() instead of .apply(). See #6227
|
||||
if ( args[0] && args[0].nodeType ) {
|
||||
var dmArgs = jQuery.makeArray( arguments ), argsLength = args.length, i = 0, tmplItem;
|
||||
while ( i < argsLength && !(tmplItem = jQuery.data( args[i++], "tmplItem" ))) {}
|
||||
if ( argsLength > 1 ) {
|
||||
dmArgs[0] = [jQuery.makeArray( args )];
|
||||
}
|
||||
if ( tmplItem && cloneIndex ) {
|
||||
dmArgs[2] = function( fragClone ) {
|
||||
// Handler called by oldManip when rendered template has been inserted into DOM.
|
||||
jQuery.tmpl.afterManip( this, fragClone, callback );
|
||||
};
|
||||
}
|
||||
oldManip.apply( this, dmArgs );
|
||||
} else {
|
||||
oldManip.apply( this, arguments );
|
||||
}
|
||||
cloneIndex = 0;
|
||||
if ( !appendToTmplItems ) {
|
||||
jQuery.tmpl.complete( newTmplItems );
|
||||
}
|
||||
return this;
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.extend({
|
||||
// Return wrapped set of template items, obtained by rendering template against data.
|
||||
tmpl: function( tmpl, data, options, parentItem ) {
|
||||
var ret, topLevel = !parentItem;
|
||||
if ( topLevel ) {
|
||||
// This is a top-level tmpl call (not from a nested template using {{tmpl}})
|
||||
parentItem = topTmplItem;
|
||||
tmpl = jQuery.template[tmpl] || jQuery.template( null, tmpl );
|
||||
wrappedItems = {}; // Any wrapped items will be rebuilt, since this is top level
|
||||
} else if ( !tmpl ) {
|
||||
// The template item is already associated with DOM - this is a refresh.
|
||||
// Re-evaluate rendered template for the parentItem
|
||||
tmpl = parentItem.tmpl;
|
||||
newTmplItems[parentItem.key] = parentItem;
|
||||
parentItem.nodes = [];
|
||||
if ( parentItem.wrapped ) {
|
||||
updateWrapped( parentItem, parentItem.wrapped );
|
||||
}
|
||||
// Rebuild, without creating a new template item
|
||||
return jQuery( build( parentItem, null, parentItem.tmpl( jQuery, parentItem ) ));
|
||||
}
|
||||
if ( !tmpl ) {
|
||||
return []; // Could throw...
|
||||
}
|
||||
if ( typeof data === "function" ) {
|
||||
data = data.call( parentItem || {} );
|
||||
}
|
||||
if ( options && options.wrapped ) {
|
||||
updateWrapped( options, options.wrapped );
|
||||
}
|
||||
ret = jQuery.isArray( data ) ?
|
||||
jQuery.map( data, function( dataItem ) {
|
||||
return dataItem ? newTmplItem( options, parentItem, tmpl, dataItem ) : null;
|
||||
}) :
|
||||
[ newTmplItem( options, parentItem, tmpl, data ) ];
|
||||
return topLevel ? jQuery( build( parentItem, null, ret ) ) : ret;
|
||||
},
|
||||
|
||||
// Return rendered template item for an element.
|
||||
tmplItem: function( elem ) {
|
||||
var tmplItem;
|
||||
if ( elem instanceof jQuery ) {
|
||||
elem = elem[0];
|
||||
}
|
||||
while ( elem && elem.nodeType === 1 && !(tmplItem = jQuery.data( elem, "tmplItem" )) && (elem = elem.parentNode) ) {}
|
||||
return tmplItem || topTmplItem;
|
||||
},
|
||||
|
||||
// Set:
|
||||
// Use $.template( name, tmpl ) to cache a named template,
|
||||
// where tmpl is a template string, a script element or a jQuery instance wrapping a script element, etc.
|
||||
// Use $( "selector" ).template( name ) to provide access by name to a script block template declaration.
|
||||
|
||||
// Get:
|
||||
// Use $.template( name ) to access a cached template.
|
||||
// Also $( selectorToScriptBlock ).template(), or $.template( null, templateString )
|
||||
// will return the compiled template, without adding a name reference.
|
||||
// If templateString includes at least one HTML tag, $.template( templateString ) is equivalent
|
||||
// to $.template( null, templateString )
|
||||
template: function( name, tmpl ) {
|
||||
if (tmpl) {
|
||||
// Compile template and associate with name
|
||||
if ( typeof tmpl === "string" ) {
|
||||
// This is an HTML string being passed directly in.
|
||||
tmpl = buildTmplFn( tmpl )
|
||||
} else if ( tmpl instanceof jQuery ) {
|
||||
tmpl = tmpl[0] || {};
|
||||
}
|
||||
if ( tmpl.nodeType ) {
|
||||
// If this is a template block, use cached copy, or generate tmpl function and cache.
|
||||
tmpl = jQuery.data( tmpl, "tmpl" ) || jQuery.data( tmpl, "tmpl", buildTmplFn( tmpl.innerHTML ));
|
||||
}
|
||||
return typeof name === "string" ? (jQuery.template[name] = tmpl) : tmpl;
|
||||
}
|
||||
// Return named compiled template
|
||||
return name ? (typeof name !== "string" ? jQuery.template( null, name ):
|
||||
(jQuery.template[name] ||
|
||||
// If not in map, treat as a selector. (If integrated with core, use quickExpr.exec)
|
||||
jQuery.template( null, htmlExpr.test( name ) ? name : jQuery( name )))) : null;
|
||||
},
|
||||
|
||||
encode: function( text ) {
|
||||
// Do HTML encoding replacing < > & and ' and " by corresponding entities.
|
||||
return ("" + text).split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'");
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.extend( jQuery.tmpl, {
|
||||
tag: {
|
||||
"tmpl": {
|
||||
_default: { $2: "null" },
|
||||
open: "if($notnull_1){_=_.concat($item.nest($1,$2));}"
|
||||
// tmpl target parameter can be of type function, so use $1, not $1a (so not auto detection of functions)
|
||||
// This means that {{tmpl foo}} treats foo as a template (which IS a function).
|
||||
// Explicit parens can be used if foo is a function that returns a template: {{tmpl foo()}}.
|
||||
},
|
||||
"wrap": {
|
||||
_default: { $2: "null" },
|
||||
open: "$item.calls(_,$1,$2);_=[];",
|
||||
close: "call=$item.calls();_=call._.concat($item.wrap(call,_));"
|
||||
},
|
||||
"each": {
|
||||
_default: { $2: "$index, $value" },
|
||||
open: "if($notnull_1){$.each($1a,function($2){with(this){",
|
||||
close: "}});}"
|
||||
},
|
||||
"if": {
|
||||
open: "if(($notnull_1) && $1a){",
|
||||
close: "}"
|
||||
},
|
||||
"else": {
|
||||
_default: { $1: "true" },
|
||||
open: "}else if(($notnull_1) && $1a){"
|
||||
},
|
||||
"html": {
|
||||
// Unecoded expression evaluation.
|
||||
open: "if($notnull_1){_.push($1a);}"
|
||||
},
|
||||
"=": {
|
||||
// Encoded expression evaluation. Abbreviated form is ${}.
|
||||
_default: { $1: "$data" },
|
||||
open: "if($notnull_1){_.push($.encode($1a));}"
|
||||
},
|
||||
"!": {
|
||||
// Comment tag. Skipped by parser
|
||||
open: ""
|
||||
}
|
||||
},
|
||||
|
||||
// This stub can be overridden, e.g. in jquery.tmplPlus for providing rendered events
|
||||
complete: function( items ) {
|
||||
newTmplItems = {};
|
||||
},
|
||||
|
||||
// Call this from code which overrides domManip, or equivalent
|
||||
// Manage cloning/storing template items etc.
|
||||
afterManip: function afterManip( elem, fragClone, callback ) {
|
||||
// Provides cloned fragment ready for fixup prior to and after insertion into DOM
|
||||
var content = fragClone.nodeType === 11 ?
|
||||
jQuery.makeArray(fragClone.childNodes) :
|
||||
fragClone.nodeType === 1 ? [fragClone] : [];
|
||||
|
||||
// Return fragment to original caller (e.g. append) for DOM insertion
|
||||
callback.call( elem, fragClone );
|
||||
|
||||
// Fragment has been inserted:- Add inserted nodes to tmplItem data structure. Replace inserted element annotations by jQuery.data.
|
||||
storeTmplItems( content );
|
||||
cloneIndex++;
|
||||
}
|
||||
});
|
||||
|
||||
//========================== Private helper functions, used by code above ==========================
|
||||
|
||||
function build( tmplItem, nested, content ) {
|
||||
// Convert hierarchical content into flat string array
|
||||
// and finally return array of fragments ready for DOM insertion
|
||||
var frag, ret = content ? jQuery.map( content, function( item ) {
|
||||
return (typeof item === "string") ?
|
||||
// Insert template item annotations, to be converted to jQuery.data( "tmplItem" ) when elems are inserted into DOM.
|
||||
(tmplItem.key ? item.replace( /(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g, "$1 " + tmplItmAtt + "=\"" + tmplItem.key + "\" $2" ) : item) :
|
||||
// This is a child template item. Build nested template.
|
||||
build( item, tmplItem, item._ctnt );
|
||||
}) :
|
||||
// If content is not defined, insert tmplItem directly. Not a template item. May be a string, or a string array, e.g. from {{html $item.html()}}.
|
||||
tmplItem;
|
||||
if ( nested ) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// top-level template
|
||||
ret = ret.join("");
|
||||
|
||||
// Support templates which have initial or final text nodes, or consist only of text
|
||||
// Also support HTML entities within the HTML markup.
|
||||
ret.replace( /^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/, function( all, before, middle, after) {
|
||||
frag = jQuery( middle ).get();
|
||||
|
||||
storeTmplItems( frag );
|
||||
if ( before ) {
|
||||
frag = unencode( before ).concat(frag);
|
||||
}
|
||||
if ( after ) {
|
||||
frag = frag.concat(unencode( after ));
|
||||
}
|
||||
});
|
||||
return frag ? frag : unencode( ret );
|
||||
}
|
||||
|
||||
function unencode( text ) {
|
||||
// Use createElement, since createTextNode will not render HTML entities correctly
|
||||
var el = document.createElement( "div" );
|
||||
el.innerHTML = text;
|
||||
return jQuery.makeArray(el.childNodes);
|
||||
}
|
||||
|
||||
// Generate a reusable function that will serve to render a template against data
|
||||
function buildTmplFn( markup ) {
|
||||
return new Function("jQuery","$item",
|
||||
"var $=jQuery,call,_=[],$data=$item.data;" +
|
||||
|
||||
// Introduce the data as local variables using with(){}
|
||||
"with($data){_.push('" +
|
||||
|
||||
// Convert the template into pure JavaScript
|
||||
jQuery.trim(markup)
|
||||
.replace( /([\\'])/g, "\\$1" )
|
||||
.replace( /[\r\t\n]/g, " " )
|
||||
.replace( /\$\{([^\}]*)\}/g, "{{= $1}}" )
|
||||
.replace( /\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
|
||||
function( all, slash, type, fnargs, target, parens, args ) {
|
||||
var tag = jQuery.tmpl.tag[ type ], def, expr, exprAutoFnDetect;
|
||||
if ( !tag ) {
|
||||
throw "Template command not found: " + type;
|
||||
}
|
||||
def = tag._default || [];
|
||||
if ( parens && !/\w$/.test(target)) {
|
||||
target += parens;
|
||||
parens = "";
|
||||
}
|
||||
if ( target ) {
|
||||
target = unescape( target );
|
||||
args = args ? ("," + unescape( args ) + ")") : (parens ? ")" : "");
|
||||
// Support for target being things like a.toLowerCase();
|
||||
// In that case don't call with template item as 'this' pointer. Just evaluate...
|
||||
expr = parens ? (target.indexOf(".") > -1 ? target + parens : ("(" + target + ").call($item" + args)) : target;
|
||||
exprAutoFnDetect = parens ? expr : "(typeof(" + target + ")==='function'?(" + target + ").call($item):(" + target + "))";
|
||||
} else {
|
||||
exprAutoFnDetect = expr = def.$1 || "null";
|
||||
}
|
||||
fnargs = unescape( fnargs );
|
||||
return "');" +
|
||||
tag[ slash ? "close" : "open" ]
|
||||
.split( "$notnull_1" ).join( target ? "typeof(" + target + ")!=='undefined' && (" + target + ")!=null" : "true" )
|
||||
.split( "$1a" ).join( exprAutoFnDetect )
|
||||
.split( "$1" ).join( expr )
|
||||
.split( "$2" ).join( fnargs ?
|
||||
fnargs.replace( /\s*([^\(]+)\s*(\((.*?)\))?/g, function( all, name, parens, params ) {
|
||||
params = params ? ("," + params + ")") : (parens ? ")" : "");
|
||||
return params ? ("(" + name + ").call($item" + params) : all;
|
||||
})
|
||||
: (def.$2||"")
|
||||
) +
|
||||
"_.push('";
|
||||
}) +
|
||||
"');}return _;"
|
||||
);
|
||||
}
|
||||
function updateWrapped( options, wrapped ) {
|
||||
// Build the wrapped content.
|
||||
options._wrap = build( options, true,
|
||||
// Suport imperative scenario in which options.wrapped can be set to a selector or an HTML string.
|
||||
jQuery.isArray( wrapped ) ? wrapped : [htmlExpr.test( wrapped ) ? wrapped : jQuery( wrapped ).html()]
|
||||
).join("");
|
||||
}
|
||||
|
||||
function unescape( args ) {
|
||||
return args ? args.replace( /\\'/g, "'").replace(/\\\\/g, "\\" ) : null;
|
||||
}
|
||||
function outerHtml( elem ) {
|
||||
var div = document.createElement("div");
|
||||
div.appendChild( elem.cloneNode(true) );
|
||||
return div.innerHTML;
|
||||
}
|
||||
|
||||
// Store template items in jQuery.data(), ensuring a unique tmplItem data data structure for each rendered template instance.
|
||||
function storeTmplItems( content ) {
|
||||
var keySuffix = "_" + cloneIndex, elem, elems, newClonedItems = {}, i, l, m;
|
||||
for ( i = 0, l = content.length; i < l; i++ ) {
|
||||
if ( (elem = content[i]).nodeType !== 1 ) {
|
||||
continue;
|
||||
}
|
||||
elems = elem.getElementsByTagName("*");
|
||||
for ( m = elems.length - 1; m >= 0; m-- ) {
|
||||
processItemKey( elems[m] );
|
||||
}
|
||||
processItemKey( elem );
|
||||
}
|
||||
function processItemKey( el ) {
|
||||
var pntKey, pntNode = el, pntItem, tmplItem, key;
|
||||
// Ensure that each rendered template inserted into the DOM has its own template item,
|
||||
if ( (key = el.getAttribute( tmplItmAtt ))) {
|
||||
while ( pntNode.parentNode && (pntNode = pntNode.parentNode).nodeType === 1 && !(pntKey = pntNode.getAttribute( tmplItmAtt ))) { }
|
||||
if ( pntKey !== key ) {
|
||||
// The next ancestor with a _tmplitem expando is on a different key than this one.
|
||||
// So this is a top-level element within this template item
|
||||
// Set pntNode to the key of the parentNode, or to 0 if pntNode.parentNode is null, or pntNode is a fragment.
|
||||
pntNode = pntNode.parentNode ? (pntNode.nodeType === 11 ? 0 : (pntNode.getAttribute( tmplItmAtt ) || 0)) : 0;
|
||||
if ( !(tmplItem = newTmplItems[key]) ) {
|
||||
// The item is for wrapped content, and was copied from the temporary parent wrappedItem.
|
||||
tmplItem = wrappedItems[key];
|
||||
tmplItem = newTmplItem( tmplItem, newTmplItems[pntNode]||wrappedItems[pntNode], null, true );
|
||||
tmplItem.key = ++itemKey;
|
||||
newTmplItems[itemKey] = tmplItem;
|
||||
}
|
||||
if ( cloneIndex ) {
|
||||
cloneTmplItem( key );
|
||||
}
|
||||
}
|
||||
el.removeAttribute( tmplItmAtt );
|
||||
} else if ( cloneIndex && (tmplItem = jQuery.data( el, "tmplItem" )) ) {
|
||||
// This was a rendered element, cloned during append or appendTo etc.
|
||||
// TmplItem stored in jQuery data has already been cloned in cloneCopyEvent. We must replace it with a fresh cloned tmplItem.
|
||||
cloneTmplItem( tmplItem.key );
|
||||
newTmplItems[tmplItem.key] = tmplItem;
|
||||
pntNode = jQuery.data( el.parentNode, "tmplItem" );
|
||||
pntNode = pntNode ? pntNode.key : 0;
|
||||
}
|
||||
if ( tmplItem ) {
|
||||
pntItem = tmplItem;
|
||||
// Find the template item of the parent element.
|
||||
// (Using !=, not !==, since pntItem.key is number, and pntNode may be a string)
|
||||
while ( pntItem && pntItem.key != pntNode ) {
|
||||
// Add this element as a top-level node for this rendered template item, as well as for any
|
||||
// ancestor items between this item and the item of its parent element
|
||||
pntItem.nodes.push( el );
|
||||
pntItem = pntItem.parent;
|
||||
}
|
||||
// Delete content built during rendering - reduce API surface area and memory use, and avoid exposing of stale data after rendering...
|
||||
delete tmplItem._ctnt;
|
||||
delete tmplItem._wrap;
|
||||
// Store template item as jQuery data on the element
|
||||
jQuery.data( el, "tmplItem", tmplItem );
|
||||
}
|
||||
function cloneTmplItem( key ) {
|
||||
key = key + keySuffix;
|
||||
tmplItem = newClonedItems[key] =
|
||||
(newClonedItems[key] || newTmplItem( tmplItem, newTmplItems[tmplItem.parent.key + keySuffix] || tmplItem.parent, null, true ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---- Helper functions for template item ----
|
||||
|
||||
function tiCalls( content, tmpl, data, options ) {
|
||||
if ( !content ) {
|
||||
return stack.pop();
|
||||
}
|
||||
stack.push({ _: content, tmpl: tmpl, item:this, data: data, options: options });
|
||||
}
|
||||
|
||||
function tiNest( tmpl, data, options ) {
|
||||
// nested template, using {{tmpl}} tag
|
||||
return jQuery.tmpl( jQuery.template( tmpl ), data, options, this );
|
||||
}
|
||||
|
||||
function tiWrap( call, wrapped ) {
|
||||
// nested template, using {{wrap}} tag
|
||||
var options = call.options || {};
|
||||
options.wrapped = wrapped;
|
||||
// Apply the template, which may incorporate wrapped content,
|
||||
return jQuery.tmpl( jQuery.template( call.tmpl ), call.data, options, call.item );
|
||||
}
|
||||
|
||||
function tiHtml( filter, textOnly ) {
|
||||
var wrapped = this._wrap;
|
||||
return jQuery.map(
|
||||
jQuery( jQuery.isArray( wrapped ) ? wrapped.join("") : wrapped ).filter( filter || "*" ),
|
||||
function(e) {
|
||||
return textOnly ?
|
||||
e.innerText || e.textContent :
|
||||
e.outerHTML || outerHtml(e);
|
||||
});
|
||||
}
|
||||
|
||||
function tiUpdate() {
|
||||
var coll = this.nodes;
|
||||
jQuery.tmpl( null, null, null, this).insertBefore( coll[0] );
|
||||
jQuery( coll ).remove();
|
||||
}
|
||||
})( jQuery );
|
|
@ -31,7 +31,7 @@
|
|||
opts.title = opts.term;
|
||||
|
||||
opts.title = opts.title || '';
|
||||
text = opts.titleLink ? ('<a href="'+ opts.titleLink +'">'+ opts.title + '</a>') : ('<span>' + opts.title +'<a id="close_friends_icon" onClick="close_twitter()" class="icon close_box" title="close"></a>'+ '</span>');
|
||||
text = opts.titleLink ? ('<a href="'+ opts.titleLink +'">'+ opts.title + '</a>') : ('<span>' + opts.title +'</span>');
|
||||
$text = $(text);
|
||||
if (opts.titleLink)
|
||||
$text.css(opts.css['titleLink']);
|
||||
|
@ -202,7 +202,7 @@
|
|||
// default styling
|
||||
a: { textDecoration: 'none', color: '#3B5998' },
|
||||
bird: { width: '50px', height: '20px', position: 'absolute', left: '-30px', top: '-20px', border: 'none' },
|
||||
container: { overflow: 'hidden', backgroundColor: '', height: '600px' },
|
||||
container: { overflow: 'hidden', backgroundColor: '', height: '600px', width: '170px' },
|
||||
fail: { background: '#6cc5c3 url(http://cloud.github.com/downloads/malsup/twitter/failwhale.png) no-repeat 50% 50%', height: '100%', padding: '10px' },
|
||||
frame: { border: '0px solid #C2CFF1', borderRadius: '0px', '-moz-border-radius': '0px', '-webkit-border-radius': '0px' },
|
||||
tweet: { padding: '5px 10px', clear: 'left' },
|
||||
|
@ -210,7 +210,7 @@
|
|||
loading: { padding: '20px', textAlign: 'center', color: '#888' },
|
||||
text: {},
|
||||
time: { fontSize: 'smaller', color: '#888' },
|
||||
title: { 'border-bottom': '1px solid #D2D2D2', 'padding-top': '5px', 'padding-bottom': '0px', 'padding-left': '9px', 'margin-bottom': '0px', 'margin-top': '30px' , 'display': 'block', 'font-size': '1.17em', 'font-weight': 'bold'},
|
||||
title: { 'display': 'none'},
|
||||
titleLink: { textDecoration: 'none', color: '#3B5998' },
|
||||
user: { fontWeight: 'bold' }
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@
|
|||
</nav>
|
||||
|
||||
|
||||
<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;z-index: 97;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Back to top"></a></div>
|
||||
<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;z-index: 97;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Scroll to bottom"></a></div>
|
||||
<div style="position: fixed; bottom: 3px; left: 25px;">$langselector</div>
|
||||
<div style="position: fixed; bottom: 23px; left: 5px;"><a href="http://pad.toktan.org/p/diabook" target="blank" ><img src="view/theme/diabook/icons/bluebug.png" title="report bugs for the theme diabook"/></a></div>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a class="embed_yt" href='$embedurl' onclick='this.innerHTML=Base64.decode("$escapedhtml"); yt_iframe();javascript:$(this).parent().css("height", "370px"); return false;' style='float:left; margin: 1em; position: relative;'>
|
||||
<a class="embed_yt" href='$embedurl' onclick='this.innerHTML=Base64.decode("$escapedhtml"); yt_iframe();javascript:$(this).parent().css("height", "450px"); return false;' style='float:left; margin: 1em; position: relative;'>
|
||||
<img width='$tw' height='$th' src='$turl' >
|
||||
<div style='position: absolute; top: 0px; left: 0px; width: $twpx; height: $thpx; background: url(images/icons/48/play.png) no-repeat center center;'></div>
|
||||
</a>
|
||||
|
|
40
view/theme/diabook/prv_message.tpl
Normal file
40
view/theme/diabook/prv_message.tpl
Normal file
|
@ -0,0 +1,40 @@
|
|||
|
||||
<h3>$header</h3>
|
||||
|
||||
<div id="prvmail-wrapper" >
|
||||
<form id="prvmail-form" action="message" method="post" >
|
||||
|
||||
$parent
|
||||
|
||||
<div id="prvmail-to-label">$to</div>
|
||||
|
||||
{{ if $showinputs }}
|
||||
<input type="text" id="recip" style="background: none repeat scroll 0 0 white;border: 1px solid #CCC;border-radius: 5px 5px 5px 5px;height: 20px;margin: 0 0 5px;
|
||||
vertical-align: middle;" name="messageto" value="$prefill" maxlength="255" size="64" tabindex="10" />
|
||||
<input type="hidden" id="recip-complete" name="messageto" value="$preid">
|
||||
{{ else }}
|
||||
$select
|
||||
{{ endif }}
|
||||
|
||||
<div id="prvmail-subject-label">$subject</div>
|
||||
<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="$subjtxt" $readonly tabindex="11" />
|
||||
|
||||
<div id="prvmail-message-label">$yourmessage</div>
|
||||
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">$text</textarea>
|
||||
|
||||
|
||||
<div id="prvmail-submit-wrapper" >
|
||||
<input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
|
||||
<div id="prvmail-upload-wrapper" >
|
||||
<div id="prvmail-upload" class="icon border camera" title="$upload" ></div>
|
||||
</div>
|
||||
<div id="prvmail-link-wrapper" >
|
||||
<div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
|
||||
</div>
|
||||
<div id="prvmail-rotator-wrapper" >
|
||||
<img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="prvmail-end"></div>
|
||||
</form>
|
||||
</div>
|
|
@ -610,9 +610,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -611,9 +611,7 @@ header #banner #logo-img {
|
|||
margin-top: 3px;
|
||||
}
|
||||
header #banner #logo-text {
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
font-size: 20px!important;position: relative!important;top: -4px!important;
|
||||
}
|
||||
/* messages */
|
||||
#message-new {
|
||||
|
|
|
@ -3,25 +3,83 @@
|
|||
/*
|
||||
* Name: Diabook
|
||||
* Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
|
||||
* Version: (Version: 1.025)
|
||||
* Version: (Version: 1.027)
|
||||
* Author:
|
||||
*/
|
||||
|
||||
$a = get_app();
|
||||
$a->theme_info = array(
|
||||
'family' => 'diabook',
|
||||
'version' => '1.025'
|
||||
);
|
||||
|
||||
|
||||
function diabook_init(&$a) {
|
||||
|
||||
//print diabook-version for debugging
|
||||
$diabook_version = "Diabook (Version: 1.025)";
|
||||
$a->page['htmlhead'] .= sprintf('<script "%s" ></script>', $diabook_version);
|
||||
$diabook_version = "Diabook (Version: 1.027)";
|
||||
$a->page['htmlhead'] .= sprintf('<META NAME="theme" CONTENT="%s"/>', $diabook_version);
|
||||
|
||||
//change css on network and profilepages
|
||||
$cssFile = null;
|
||||
|
||||
$close_pages = false;
|
||||
$site_close_pages = get_config("diabook", "close_pages" );
|
||||
if (local_user()) {$close_pages = get_pconfig(local_user(), "diabook", "close_pages");}
|
||||
if ($close_pages===false) $close_pages=$site_close_pages;
|
||||
if ($close_pages===false) $close_pages="1";
|
||||
|
||||
$close_profiles = false;
|
||||
$site_close_profiles = get_config("diabook", "close_profiles" );
|
||||
if (local_user()) {$close_profiles = get_pconfig(local_user(), "diabook", "close_profiles");}
|
||||
if ($close_profiles===false) $close_profiles=$site_close_profiles;
|
||||
if ($close_profiles===false) $close_profiles="0";
|
||||
|
||||
$close_helpers = false;
|
||||
$site_close_helpers = get_config("diabook", "close_helpers" );
|
||||
if (local_user()) {$close_helpers = get_pconfig(local_user(), "diabook", "close_helpers");}
|
||||
if ($close_helpers===false) $close_helpers=$site_close_helpers;
|
||||
if ($close_helpers===false) $close_helpers="0";
|
||||
|
||||
$close_services = false;
|
||||
$site_close_services = get_config("diabook", "close_services" );
|
||||
if (local_user()) {$close_services = get_pconfig(local_user(), "diabook", "close_services");}
|
||||
if ($close_services===false) $close_services=$site_close_services;
|
||||
if ($close_services===false) $close_services="0";
|
||||
|
||||
$close_friends = false;
|
||||
$site_close_friends = get_config("diabook", "close_friends" );
|
||||
if (local_user()) {$close_friends = get_pconfig(local_user(), "diabook", "close_friends");}
|
||||
if ($close_friends===false) $close_friends=$site_close_friends;
|
||||
if ($close_friends===false) $close_friends="0";
|
||||
|
||||
$close_lastusers = false;
|
||||
$site_close_lastusers = get_config("diabook", "close_lastusers" );
|
||||
if (local_user()) {$close_lastusers = get_pconfig(local_user(), "diabook", "close_lastusers");}
|
||||
if ($close_lastusers===false) $close_lastusers=$site_close_lastusers;
|
||||
if ($close_lastusers===false) $close_lastusers="0";
|
||||
|
||||
$close_lastphotos = false;
|
||||
$site_close_lastphotos = get_config("diabook", "close_lastphotos" );
|
||||
if (local_user()) {$close_lastphotos = get_pconfig(local_user(), "diabook", "close_lastphotos");}
|
||||
if ($close_lastphotos===false) $close_lastphotos=$site_close_lastphotos;
|
||||
if ($close_lastphotos===false) $close_lastphotos="0";
|
||||
|
||||
$close_lastlikes = false;
|
||||
$site_close_lastlikes = get_config("diabook", "close_lastlikes" );
|
||||
if (local_user()) {$close_lastlikes = get_pconfig(local_user(), "diabook", "close_lastlikes");}
|
||||
if ($close_lastlikes===false) $close_lastlikes=$site_close_lastlikes;
|
||||
if ($close_lastlikes===false) $close_lastlikes="0";
|
||||
|
||||
$close_twitter = false;
|
||||
$site_close_twitter = get_config("diabook", "close_twitter" );
|
||||
if (local_user()) {$close_twitter = get_pconfig(local_user(), "diabook", "close_twitter");}
|
||||
if ($close_twitter===false) $close_twitter=$site_close_twitter;
|
||||
if ($close_twitter===false) $close_twitter="1";
|
||||
|
||||
$close_mapquery = false;
|
||||
$site_close_mapquery = get_config("diabook", "close_mapquery" );
|
||||
if (local_user()) {$close_mapquery = get_pconfig(local_user(), "diabook", "close_mapquery");}
|
||||
if ($close_mapquery===false) $close_mapquery=$site_close_mapquery;
|
||||
if ($close_mapquery===false) $close_mapquery="1";
|
||||
|
||||
|
||||
$resolution=false;
|
||||
$resolution = get_pconfig(local_user(), "diabook", "resolution");
|
||||
if ($resolution===false) $resolution="normal";
|
||||
|
@ -48,7 +106,7 @@ if ($color=="pink") $color_path = "/diabook-pink/";
|
|||
if ($color=="green") $color_path = "/diabook-green/";
|
||||
if ($color=="dark") $color_path = "/diabook-dark/";
|
||||
|
||||
|
||||
|
||||
//profile_side at networkpages
|
||||
if ($a->argv[0] === "network" && local_user()){
|
||||
|
||||
|
@ -80,9 +138,8 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
|
||||
}
|
||||
|
||||
$ccCookie = $_COOKIE['close_pages'] + $_COOKIE['close_profiles'] + $_COOKIE['close_helpers'] + $_COOKIE['close_services'] + $_COOKIE['close_friends'] + $_COOKIE['close_twitter'] + $_COOKIE['close_lastusers'] + $_COOKIE['close_lastphotos'] + $_COOKIE['close_lastlikes'];
|
||||
|
||||
if($ccCookie != "9") {
|
||||
$ccCookie = $close_pages + $close_mapquery + $close_profiles + $close_helpers + $close_services + $close_friends + $close_twitter + $close_lastusers + $close_lastphotos + $close_lastlikes;
|
||||
if($ccCookie != "10") {
|
||||
// COMMUNITY
|
||||
diabook_community_info();
|
||||
|
||||
|
@ -96,7 +153,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
|
||||
//right_aside at profile pages
|
||||
if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){
|
||||
if($ccCookie != "9") {
|
||||
if($ccCookie != "10") {
|
||||
// COMMUNITY
|
||||
diabook_community_info();
|
||||
|
||||
|
@ -113,51 +170,137 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s"></script>', $cookieJS);
|
||||
|
||||
//load jquery.ae.image.resize.js
|
||||
$imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.js";
|
||||
$imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.min.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $imageresizeJS);
|
||||
|
||||
//load jquery.ui.js
|
||||
if($ccCookie != "9") {
|
||||
if($ccCookie != "10") {
|
||||
$jqueryuiJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $jqueryuiJS);
|
||||
}
|
||||
|
||||
//load jquery.twitter.search.js
|
||||
if($_COOKIE['close_twitter'] != "1") {
|
||||
if($close_twitter != "1") {
|
||||
$twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $twitterJS);
|
||||
}
|
||||
|
||||
//load jquery.mapquery.js
|
||||
|
||||
if($close_mapquery != "1") {
|
||||
$mqtmplJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.tmpl.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqtmplJS);
|
||||
$mapqueryJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.core.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mapqueryJS);
|
||||
$openlayersJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/OpenLayers.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $openlayersJS);
|
||||
$mqmouseposJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqmouseposJS);
|
||||
$mousewheelJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mousewheel.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mousewheelJS);
|
||||
$mqlegendJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.legend.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqlegendJS);
|
||||
$mqlayermanagerJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.mqLayerManager.js";
|
||||
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqlayermanagerJS);
|
||||
|
||||
}
|
||||
|
||||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
$("a.lightbox").fancybox(); // Select all links with lightbox class
|
||||
$("a#twittersettings-link").fancybox({onClosed: function() { $("#twittersettings").attr("style","display: none;");}} );
|
||||
$("a#mapcontrol-link").fancybox({onClosed: function() { $("#mapcontrol").attr("style","display: none;");}} );
|
||||
$("a#closeicon").fancybox({onClosed: function() { $("#boxsettings").attr("style","display: none;");}} );
|
||||
});
|
||||
|
||||
$(window).load(function() {
|
||||
var footer_top = $(document).height() - 30;
|
||||
$("div#footerbox").attr("style", "border-top: 1px solid #D2D2D2; width: 70%;right: 15%;position: absolute;top:"+footer_top+"px;");
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>';
|
||||
|
||||
//check if mapquerybox is active and print
|
||||
|
||||
if($close_mapquery != "1") {
|
||||
$ELZoom=false;
|
||||
$ELPosX=false;
|
||||
$ELPosy=false;
|
||||
$site_ELZoom = get_config("diabook", "ELZoom" );
|
||||
$site_ELPosX = get_config("diabook", "ELPosX" );
|
||||
$site_ELPosY = get_config("diabook", "ELPosY" );
|
||||
$ELZoom = get_pconfig(local_user(), "diabook", "ELZoom");
|
||||
$ELPosX = get_pconfig(local_user(), "diabook", "ELPosX");
|
||||
$ELPosY = get_pconfig(local_user(), "diabook", "ELPosY");
|
||||
if ($ELZoom===false) $ELZoom=$site_ELZoom;
|
||||
if ($ELPosX===false) $ELPosX=$site_ELPosX;
|
||||
if ($ELPosY===false) $ELPosY=$site_ELPosY;
|
||||
if ($ELZoom===false) $ELZoom="0";
|
||||
if ($ELPosX===false) $ELPosX="0";
|
||||
if ($ELPosY===false) $ELPosY="0";
|
||||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#map").mapQuery({
|
||||
layers:[{ //add layers to your map; you need to define at least one to be able to see anything on the map
|
||||
type:"osm" //add a layer of the type osm (OpenStreetMap)
|
||||
}],
|
||||
center:({zoom:'.$ELZoom.',position:['.$ELPosX.','.$ELPosY.']}),
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function open_mapcontrol() {
|
||||
$("div#mapcontrol").attr("style","display: block;width:900px;height:900px;");
|
||||
$("#map2").mapQuery({
|
||||
layers:[{type:"osm", label:"OpenStreetMap" },
|
||||
{type:"wms", label:"Population density 2010", legend:{url:"http://mapserver.edugis.nl/cgi-bin/mapserv?map=maps/edugis/cache/population.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=Bevolkingsdichtheid_2010&format=image/png"}, url:"http://t1.edugis.nl/tiles/tilecache.py?map=maps/edugis/cache/population.map",
|
||||
layers:"Bevolkingsdichtheid_2010" }],
|
||||
center:({zoom:'.$ELZoom.',position:['.$ELPosX.','.$ELPosY.']})});
|
||||
|
||||
$("#mouseposition").mqMousePosition({
|
||||
map: "#map2",
|
||||
x:"",
|
||||
y:"",
|
||||
precision:4
|
||||
});
|
||||
|
||||
$("#layermanager").mqLayerManager({map:"#map2"});
|
||||
|
||||
map = $("#map2").mapQuery().data("mapQuery");
|
||||
textarea = document.getElementById("id_diabook_ELZoom");
|
||||
textarea.value = "'.$ELZoom.'";
|
||||
$("#map2").bind("mousewheel", function(event, delta) {
|
||||
if (delta > 0 && textarea.value < 18){
|
||||
textarea.value = textarea.value - delta*-1; }
|
||||
if (delta < 0 && textarea.value > "0"){
|
||||
textarea.value = textarea.value - delta*-1; }
|
||||
});
|
||||
};
|
||||
</script>';
|
||||
}
|
||||
//check if twitterbox is active and print
|
||||
if($_COOKIE['close_twitter'] != "1") {
|
||||
if($close_twitter != "1") {
|
||||
$TSearchTerm=false;
|
||||
$site_TSearchTerm = get_config("diabook", "TSearchTerm" );
|
||||
$TSearchTerm = get_pconfig(local_user(), "diabook", "TSearchTerm");
|
||||
if ($TSearchTerm===false) $TSearchTerm=$site_TSearchTerm;
|
||||
if ($TSearchTerm===false) $TSearchTerm="friendica";
|
||||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
$(function() {
|
||||
$("#twitter").twitterSearch({
|
||||
term: "friendica",
|
||||
term: "'.$TSearchTerm.'",
|
||||
animInSpeed: 250,
|
||||
bird: false,
|
||||
avatar: false,
|
||||
colorExterior: "#fff",
|
||||
title: "Last Tweets",
|
||||
timeout: 10000 });
|
||||
});
|
||||
function open_twittersettings() {
|
||||
$("div#twittersettings").attr("style","display: block;");
|
||||
};
|
||||
</script>';}
|
||||
|
||||
//check if community_home-plugin is activated and change css
|
||||
|
@ -169,6 +312,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
<script>
|
||||
$(document).ready(function() {
|
||||
$("div#login-submit-wrapper").attr("style","padding-top: 120px;");
|
||||
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
|
@ -186,146 +330,164 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
function restore_boxes(){
|
||||
$.cookie("close_pages","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_helpers","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_profiles","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_services","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_friends","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_twitter","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_lastusers","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_lastphotos","2", { expires: 365, path: "/" });
|
||||
$.cookie("close_lastlikes","2", { expires: 365, path: "/" });
|
||||
$.cookie("Boxorder",null, { expires: 365, path: "/" });
|
||||
alert("Right-hand column was restored. Please refresh your browser");
|
||||
alert("Boxorder at right-hand column was restored. Please refresh your browser");
|
||||
}
|
||||
</script>';}
|
||||
|
||||
if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname'] or $a->argv[0] === "network" && local_user()){
|
||||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
$(".oembed.photo img").aeImageResize({height: 400, width: 400});
|
||||
});
|
||||
</script>';
|
||||
|
||||
if($ccCookie != "9") {
|
||||
if($ccCookie != "10") {
|
||||
$a->page['htmlhead'] .= '
|
||||
<script>
|
||||
$("right_aside").ready(function(){
|
||||
|
||||
if($.cookie("close_pages") == "1")
|
||||
if('.$close_pages.')
|
||||
{
|
||||
document.getElementById( "close_pages" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_profiles") == "1")
|
||||
if('.$close_mapquery.')
|
||||
{
|
||||
document.getElementById( "close_mapquery" ).style.display = "none";
|
||||
};
|
||||
|
||||
if('.$close_profiles.')
|
||||
{
|
||||
document.getElementById( "close_profiles" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_helpers") == "1")
|
||||
if('.$close_helpers.')
|
||||
{
|
||||
document.getElementById( "close_helpers" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_services") == "1")
|
||||
if('.$close_services.')
|
||||
{
|
||||
document.getElementById( "close_services" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_friends") == "1")
|
||||
if('.$close_friends.')
|
||||
{
|
||||
document.getElementById( "close_friends" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_twitter") == "1")
|
||||
if('.$close_twitter.')
|
||||
{
|
||||
document.getElementById( "twitter" ).style.display = "none";
|
||||
document.getElementById( "close_twitter" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_lastusers") == "1")
|
||||
if('.$close_lastusers.')
|
||||
{
|
||||
document.getElementById( "close_lastusers" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_lastphotos") == "1")
|
||||
if('.$close_lastphotos.')
|
||||
{
|
||||
document.getElementById( "close_lastphotos" ).style.display = "none";
|
||||
};
|
||||
|
||||
if($.cookie("close_lastlikes") == "1")
|
||||
if('.$close_lastlikes.')
|
||||
{
|
||||
document.getElementById( "close_lastlikes" ).style.display = "none";
|
||||
};}
|
||||
|
||||
);
|
||||
|
||||
function close_pages(){
|
||||
document.getElementById( "close_pages" ).style.display = "none";
|
||||
$.cookie("close_pages","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_profiles(){
|
||||
document.getElementById( "close_profiles" ).style.display = "none";
|
||||
$.cookie("close_profiles","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_helpers(){
|
||||
document.getElementById( "close_helpers" ).style.display = "none";
|
||||
$.cookie("close_helpers","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_services(){
|
||||
document.getElementById( "close_services" ).style.display = "none";
|
||||
$.cookie("close_services","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_friends(){
|
||||
document.getElementById( "close_friends" ).style.display = "none";
|
||||
$.cookie("close_friends","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_twitter(){
|
||||
document.getElementById( "twitter" ).style.display = "none";
|
||||
$.cookie("close_twitter","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_lastusers(){
|
||||
document.getElementById( "close_lastusers" ).style.display = "none";
|
||||
$.cookie("close_lastusers","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_lastphotos(){
|
||||
document.getElementById( "close_lastphotos" ).style.display = "none";
|
||||
$.cookie("close_lastphotos","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function close_lastlikes(){
|
||||
document.getElementById( "close_lastlikes" ).style.display = "none";
|
||||
$.cookie("close_lastlikes","1", { expires: 365, path: "/" });
|
||||
};
|
||||
|
||||
function open_boxsettings() {
|
||||
$("div#boxsettings").attr("style","display: block;height:500px;width:300px;");
|
||||
$("label").attr("style","width: 150px;");
|
||||
};
|
||||
|
||||
</script>';}
|
||||
}
|
||||
//end js scripts
|
||||
|
||||
// custom css
|
||||
if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $cssFile);
|
||||
|
||||
|
||||
//footer
|
||||
$tpl = get_markup_template('footer.tpl');
|
||||
$a->page['footer'] .= replace_macros($tpl, array());
|
||||
|
||||
//
|
||||
js_in_foot();
|
||||
js_diabook_footer();
|
||||
}
|
||||
|
||||
|
||||
function diabook_community_info() {
|
||||
$a = get_app();
|
||||
|
||||
$close_pages = false;
|
||||
$site_close_pages = get_config("diabook", "close_pages" );
|
||||
if (local_user()) {$close_pages = get_pconfig(local_user(), "diabook", "close_pages");}
|
||||
if ($close_pages===false) $close_pages=$site_close_pages;
|
||||
if ($close_pages===false) $close_pages="1";
|
||||
|
||||
$close_profiles = false;
|
||||
$site_close_profiles = get_config("diabook", "close_profiles" );
|
||||
if (local_user()) {$close_profiles = get_pconfig(local_user(), "diabook", "close_profiles");}
|
||||
if ($close_profiles===false) $close_profiles=$site_close_profiles;
|
||||
if ($close_profiles===false) $close_profiles="0";
|
||||
|
||||
$close_helpers = false;
|
||||
$site_close_helpers = get_config("diabook", "close_helpers" );
|
||||
if (local_user()) {$close_helpers = get_pconfig(local_user(), "diabook", "close_helpers");}
|
||||
if ($close_helpers===false) $close_helpers=$site_close_helpers;
|
||||
if ($close_helpers===false) $close_helpers="0";
|
||||
|
||||
$close_services = false;
|
||||
$site_close_services = get_config("diabook", "close_services" );
|
||||
if (local_user()) {$close_services = get_pconfig(local_user(), "diabook", "close_services");}
|
||||
if ($close_services===false) $close_services=$site_close_services;
|
||||
if ($close_services===false) $close_services="0";
|
||||
|
||||
$close_friends = false;
|
||||
$site_close_friends = get_config("diabook", "close_friends" );
|
||||
if (local_user()) {$close_friends = get_pconfig(local_user(), "diabook", "close_friends");}
|
||||
if ($close_friends===false) $close_friends=$site_close_friends;
|
||||
if ($close_friends===false) $close_friends="0";
|
||||
|
||||
$close_lastusers = false;
|
||||
$site_close_lastusers = get_config("diabook", "close_lastusers" );
|
||||
if (local_user()) {$close_lastusers = get_pconfig(local_user(), "diabook", "close_lastusers");}
|
||||
if ($close_lastusers===false) $close_lastusers=$site_close_lastusers;
|
||||
if ($close_lastusers===false) $close_lastusers="0";
|
||||
|
||||
$close_lastphotos = false;
|
||||
$site_close_lastphotos = get_config("diabook", "close_lastphotos" );
|
||||
if (local_user()) {$close_lastphotos = get_pconfig(local_user(), "diabook", "close_lastphotos");}
|
||||
if ($close_lastphotos===false) $close_lastphotos=$site_close_lastphotos;
|
||||
if ($close_lastphotos===false) $close_lastphotos="0";
|
||||
|
||||
$close_lastlikes = false;
|
||||
$site_close_lastlikes = get_config("diabook", "close_lastlikes" );
|
||||
if (local_user()) {$close_lastlikes = get_pconfig(local_user(), "diabook", "close_lastlikes");}
|
||||
if ($close_lastlikes===false) $close_lastlikes=$site_close_lastlikes;
|
||||
if ($close_lastlikes===false) $close_lastlikes="0";
|
||||
|
||||
$close_twitter = false;
|
||||
$site_close_twitter = get_config("diabook", "close_twitter" );
|
||||
if (local_user()) {$close_twitter = get_pconfig(local_user(), "diabook", "close_twitter");}
|
||||
if ($close_twitter===false) $close_twitter=$site_close_twitter;
|
||||
if ($close_twitter===false) $close_twitter="1";
|
||||
|
||||
$close_mapquery = false;
|
||||
$site_close_mapquery = get_config("diabook", "close_mapquery" );
|
||||
if (local_user()) {$close_mapquery = get_pconfig(local_user(), "diabook", "close_mapquery");}
|
||||
if ($close_mapquery===false) $close_mapquery=$site_close_mapquery;
|
||||
if ($close_mapquery===false) $close_mapquery="1";
|
||||
|
||||
|
||||
// comunity_profiles
|
||||
if($_COOKIE['close_profiles'] != "1") {
|
||||
$aside['$comunity_profilest_title'] = t('Community Profiles');
|
||||
if($close_profiles != "1") {
|
||||
$aside['$comunity_profiles_title'] = t('Community Profiles');
|
||||
$aside['$comunity_profiles_items'] = array();
|
||||
$r = q("select gcontact.* from gcontact left join glink on glink.gcid = gcontact.id
|
||||
where glink.cid = 0 and glink.uid = 0 order by rand() limit 9");
|
||||
|
@ -345,7 +507,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
|
||||
// last 12 users
|
||||
if($_COOKIE['close_lastusers'] != "1") {
|
||||
if($close_lastusers != "1") {
|
||||
$aside['$lastusers_title'] = t('Last users');
|
||||
$aside['$lastusers_items'] = array();
|
||||
$sql_extra = "";
|
||||
|
@ -374,7 +536,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
|
||||
// last 10 liked items
|
||||
if($_COOKIE['close_lastlikes'] != "1") {
|
||||
if($close_lastlikes != "1") {
|
||||
$aside['$like_title'] = t('Last likes');
|
||||
$aside['$like_items'] = array();
|
||||
$r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM
|
||||
|
@ -419,7 +581,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
|
||||
// last 12 photos
|
||||
if($_COOKIE['close_photos'] != "1") {
|
||||
if($close_lastphotos != "1") {
|
||||
$aside['$photos_title'] = t('Last photos');
|
||||
$aside['$photos_items'] = array();
|
||||
$r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM
|
||||
|
@ -454,7 +616,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
|
||||
//right_aside FIND FRIENDS
|
||||
if($_COOKIE['close_friends'] != "1") {
|
||||
if($close_friends != "1") {
|
||||
if(local_user()) {
|
||||
$nv = array();
|
||||
$nv['title'] = Array("", t('Find Friends'), "", "");
|
||||
|
@ -475,10 +637,10 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
|
||||
//Community_Pages at right_aside
|
||||
if($_COOKIE['close_pages'] != "1") {
|
||||
if($close_pages != "1") {
|
||||
if(local_user()) {
|
||||
$page = '
|
||||
<h3 style="margin-top:0px;">'.t("Community Pages").'<a id="close_pages_icon" onClick="close_pages()" class="icon close_box" title="close"></a></h3></div>
|
||||
<h3 style="margin-top:0px;">'.t("Community Pages").'<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="'.t("Settings").'"></a></h3>
|
||||
<div id=""><ul style="margin-left: 7px;margin-top: 0px;padding-left: 0px;padding-top: 0px;">';
|
||||
|
||||
$pagelist = array();
|
||||
|
@ -509,20 +671,107 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
}}
|
||||
//END Community Page
|
||||
|
||||
//mapquery
|
||||
|
||||
if($close_mapquery != "1") {
|
||||
$mapquery = array();
|
||||
$mapquery['title'] = Array("", "<a id='mapcontrol-link' href='#mapcontrol' style='text-decoration:none;' onclick='open_mapcontrol(); return false;'>".t('Earth Layers')."</a>", "", "");
|
||||
$aside['$mapquery'] = $mapquery;
|
||||
$ELZoom = get_pconfig(local_user(), 'diabook', 'ELZoom' );
|
||||
$ELPosX = get_pconfig(local_user(), 'diabook', 'ELPosX' );
|
||||
$ELPosY = get_pconfig(local_user(), 'diabook', 'ELPosY' );
|
||||
$aside['$ELZoom'] = array('diabook_ELZoom', t('Set zoomfactor for Earth Layers'), $ELZoom, '', $ELZoom);
|
||||
$aside['$ELPosX'] = array('diabook_ELPosX', t('Set longitude (X) for Earth Layers'), $ELPosX, '', $ELPosX);
|
||||
$aside['$ELPosY'] = array('diabook_ELPosY', t('Set latitude (Y) for Earth Layers'), $ELPosY, '', $ELPosY);
|
||||
if (isset($_POST['diabook-settings-map-sub']) && $_POST['diabook-settings-map-sub']!=''){
|
||||
set_pconfig(local_user(), 'diabook', 'ELZoom', $_POST['diabook_ELZoom']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELPosX', $_POST['diabook_ELPosX']);
|
||||
set_pconfig(local_user(), 'diabook', 'ELPosY', $_POST['diabook_ELPosY']);
|
||||
header("Location: network");
|
||||
}
|
||||
}
|
||||
//end mapquery
|
||||
|
||||
//helpers
|
||||
if($_COOKIE['close_helpers'] != "1") {
|
||||
if($close_helpers != "1") {
|
||||
$helpers = array();
|
||||
$helpers['title'] = Array("", t('Help or @NewHere ?'), "", "");
|
||||
$aside['$helpers'] = $helpers;
|
||||
}
|
||||
//end helpers
|
||||
//connectable services
|
||||
if($_COOKIE['close_services'] != "1") {
|
||||
if($close_services != "1") {
|
||||
$con_services = array();
|
||||
$con_services['title'] = Array("", t('Connect Services'), "", "");
|
||||
$aside['$con_services'] = $con_services;
|
||||
}
|
||||
//end connectable services
|
||||
//twitter
|
||||
if($close_twitter != "1") {
|
||||
$twitter = array();
|
||||
$twitter['title'] = Array("", "<a id='twittersettings-link' href='#twittersettings' style='text-decoration:none;' onclick='open_twittersettings(); return false;'>".t('Last Tweets')."</a>", "", "");
|
||||
$aside['$twitter'] = $twitter;
|
||||
$TSearchTerm = get_pconfig(local_user(), 'diabook', 'TSearchTerm' );
|
||||
$aside['$TSearchTerm'] = array('diabook_TSearchTerm', t('Set twitter search term'), $TSearchTerm, '', $TSearchTerm);
|
||||
$baseurl = $a->get_baseurl($ssl_state);
|
||||
$aside['$baseurl'] = $baseurl;
|
||||
if (isset($_POST['diabook-settings-sub']) && $_POST['diabook-settings-sub']!=''){
|
||||
set_pconfig(local_user(), 'diabook', 'TSearchTerm', $_POST['diabook_TSearchTerm']);
|
||||
header("Location: network");
|
||||
}
|
||||
}
|
||||
//end twitter
|
||||
if($ccCookie != "10") {
|
||||
$close_pages = get_pconfig(local_user(), 'diabook', 'close_pages' );
|
||||
$close_mapquery = get_pconfig(local_user(), 'diabook', 'close_mapquery' );
|
||||
$close_profiles = get_pconfig(local_user(), 'diabook', 'close_profiles' );
|
||||
$close_helpers = get_pconfig(local_user(), 'diabook', 'close_helpers' );
|
||||
$close_services = get_pconfig(local_user(), 'diabook', 'close_services' );
|
||||
$close_friends = get_pconfig(local_user(), 'diabook', 'close_friends' );
|
||||
$close_twitter = get_pconfig(local_user(), 'diabook', 'close_twitter' );
|
||||
$close_lastusers = get_pconfig(local_user(), 'diabook', 'close_lastusers' );
|
||||
$close_lastphotos = get_pconfig(local_user(), 'diabook', 'close_lastphotos' );
|
||||
$close_lastlikes = get_pconfig(local_user(), 'diabook', 'close_lastlikes' );
|
||||
$close_pagesC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_mapqueryC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_profilesC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_helpersC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_servicesC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_friendsC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_twitterC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_lastusersC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_lastphotosC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$close_lastlikesC = array('1'=>t("don't show"), '0'=>t("show"),);
|
||||
$boxsettings['title'] = Array("", t('Show/hide boxes at right-hand column:'), "", "");
|
||||
$aside['$boxsettings'] = $boxsettings;
|
||||
$aside['$close_pages'] = array('diabook_close_pages', t('Community Pages'), $close_pages, '', $close_pagesC);
|
||||
$aside['$close_mapquery'] = array('diabook_close_mapquery', t('Earth Layers'), $close_mapquery, '', $close_mapqueryC);
|
||||
$aside['$close_profiles'] = array('diabook_close_profiles', t('Community Profiles'), $close_profiles, '', $close_profilesC);
|
||||
$aside['$close_helpers'] = array('diabook_close_helpers', t('Help or @NewHere ?'), $close_helpers, '', $close_helpersC);
|
||||
$aside['$close_services'] = array('diabook_close_services', t('Connect Services'), $close_services, '', $close_servicesC);
|
||||
$aside['$close_friends'] = array('diabook_close_friends', t('Find Friends'), $close_friends, '', $close_friendsC);
|
||||
$aside['$close_twitter'] = array('diabook_close_twitter', t('Last Tweets'), $close_twitter, '', $close_twitterC);
|
||||
$aside['$close_lastusers'] = array('diabook_close_lastusers', t('Last users'), $close_lastusers, '', $close_lastusersC);
|
||||
$aside['$close_lastphotos'] = array('diabook_close_lastphotos', t('Last photos'), $close_lastphotos, '', $close_lastphotosC);
|
||||
$aside['$close_lastlikes'] = array('diabook_close_lastlikes', t('Last likes'), $close_lastlikes, '', $close_lastlikesC);
|
||||
$aside['$sub'] = t('Submit');
|
||||
$baseurl = $a->get_baseurl($ssl_state);
|
||||
$aside['$baseurl'] = $baseurl;
|
||||
if (isset($_POST['diabook-settings-box-sub']) && $_POST['diabook-settings-box-sub']!=''){
|
||||
set_pconfig(local_user(), 'diabook', 'close_pages', $_POST['diabook_close_pages']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_mapquery', $_POST['diabook_close_mapquery']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_profiles', $_POST['diabook_close_profiles']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_helpers', $_POST['diabook_close_helpers']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_services', $_POST['diabook_close_services']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_friends', $_POST['diabook_close_friends']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_twitter', $_POST['diabook_close_twitter']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastusers', $_POST['diabook_close_lastusers']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastphotos', $_POST['diabook_close_lastphotos']);
|
||||
set_pconfig(local_user(), 'diabook', 'close_lastlikes', $_POST['diabook_close_lastlikes']);
|
||||
}
|
||||
}
|
||||
$close = t('Settings');
|
||||
$aside['$close'] = $close;
|
||||
//get_baseurl
|
||||
$url = $a->get_baseurl($ssl_state);
|
||||
$aside['$url'] = $url;
|
||||
|
@ -532,7 +781,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
|
||||
}
|
||||
|
||||
function js_in_foot() {
|
||||
function js_diabook_footer() {
|
||||
/** @purpose insert stuff in bottom of page
|
||||
*/
|
||||
$a = get_app();
|
||||
|
@ -542,14 +791,4 @@ if ($color=="dark") $color_path = "/diabook-dark/";
|
|||
$a->page['footer'] = $a->page['footer'].replace_macros($tpl, $bottom);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6,11 +6,36 @@
|
|||
|
||||
{{inc field_select.tpl with $field=$resolution}}{{endinc}}
|
||||
|
||||
<div class="field select">
|
||||
<a onClick="restore_boxes()" title="Restore right-hand column" style="cursor: pointer;">Restore right-hand column</a>
|
||||
<div class="settings-submit-wrapper">
|
||||
<input type="submit" value="$submit" class="settings-submit" name="diabook-settings-submit" />
|
||||
</div>
|
||||
<br>
|
||||
<h3>Show/hide boxes at right-hand column</h3>
|
||||
{{inc field_select.tpl with $field=$close_pages}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_profiles}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_helpers}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_services}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_friends}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastusers}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastphotos}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_lastlikes}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_twitter}}{{endinc}}
|
||||
{{inc field_input.tpl with $field=$TSearchTerm}}{{endinc}}
|
||||
{{inc field_select.tpl with $field=$close_mapquery}}{{endinc}}
|
||||
|
||||
{{inc field_input.tpl with $field=$ELPosX}}{{endinc}}
|
||||
|
||||
{{inc field_input.tpl with $field=$ELPosY}}{{endinc}}
|
||||
|
||||
{{inc field_input.tpl with $field=$ELZoom}}{{endinc}}
|
||||
|
||||
<div class="settings-submit-wrapper">
|
||||
<input type="submit" value="$submit" class="settings-submit" name="diabook-settings-submit" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="field select">
|
||||
<a onClick="restore_boxes()" title="Restore boxorder at right-hand column" style="cursor: pointer;">Restore boxorder at right-hand column</a>
|
||||
</div>
|
||||
|
||||
|
|
29
view/theme/dispy/README.md
Normal file
29
view/theme/dispy/README.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
## Dispy Themes ##
|
||||
|
||||
**Dispy**: Light, Spartan, Sleek, and Functional
|
||||
|
||||
**Dispy Dark**: Dark, Spartan, Sleek, and Functional
|
||||
|
||||
|
||||
### A Brief History ###
|
||||
|
||||
Their beginnings are unknown to me, but they are part of the themes
|
||||
that Mike Macgirvin, Emmanual Revah, put together for Friendica, I *think*.
|
||||
|
||||
Later on, in the fall and winter of 2011-2012, I took over maintaining
|
||||
the original dispy (now called dispy light). It went through a minor re-vamp,
|
||||
keeping to its spartan look as much as possible.
|
||||
|
||||
I added more rounded corners, and as Friendica grew in capabilities and
|
||||
features, so did it - but, I always wanted to keep the features down, so as
|
||||
to be fast and spartan, which seems to appeal to a lot of the geekier
|
||||
users (like myself).
|
||||
|
||||
Soon after I started maintaining dispy light, I developed its sister
|
||||
theme - dark - according to another user's request (and other "+1"
|
||||
votes for one like it). So *dark* was "born".
|
||||
|
||||
Anyway, I've added a few more things since, and I hope I haven't
|
||||
over-done it ;-).
|
||||
|
||||
Simon
|
71
view/theme/dispy/css/media.less
Normal file
71
view/theme/dispy/css/media.less
Normal file
|
@ -0,0 +1,71 @@
|
|||
//
|
||||
//* media stuff */
|
||||
@media handheld and screen {
|
||||
body {
|
||||
font-size: 15pt;
|
||||
}
|
||||
}
|
||||
//* Smartphones (portrait and landscape) ----------- */
|
||||
@media only screen and (min-device-width: 320px)
|
||||
and (max-device-width: 480px) {
|
||||
body {
|
||||
font-size: 12pt;
|
||||
}
|
||||
}
|
||||
//* Smartphones (landscape) ----------- */
|
||||
@media only screen and (min-width: 321px) {
|
||||
body {
|
||||
font-size: 12pt;
|
||||
}
|
||||
}
|
||||
//* Smartphones (portrait) ----------- */
|
||||
@media only screen and (max-width: 320px) {
|
||||
body {
|
||||
font-size: 12pt;
|
||||
}
|
||||
}
|
||||
//* iPads (portrait and landscape) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px) {
|
||||
body {
|
||||
font-size: 14pt;
|
||||
}
|
||||
}
|
||||
//* iPads (landscape) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px)
|
||||
and (orientation: landscape) {
|
||||
body {
|
||||
font-size: 14pt;
|
||||
}
|
||||
}
|
||||
//* iPads (portrait) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px)
|
||||
and (orientation: portrait) {
|
||||
body {
|
||||
font-size: 14pt;
|
||||
}
|
||||
}
|
||||
//* Desktops and laptops ----------- */
|
||||
//adjusted to 1024 from 1224.
|
||||
//not everybody has a fucking big screen ffs
|
||||
@media only screen and (min-width: 1024px) {
|
||||
body {
|
||||
font-size: 14pt;
|
||||
}
|
||||
}
|
||||
//* Large screens - */
|
||||
@media only screen and (min-width: 1520px) {
|
||||
body {
|
||||
font-size: 16pt;
|
||||
}
|
||||
}
|
||||
//* iPhone 4 ----------- */
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
|
||||
only screen and (min-device-pixel-ratio: 1.5) {
|
||||
body {
|
||||
font-size: 14pt;
|
||||
}
|
||||
}
|
||||
|
66
view/theme/dispy/css/reset.less
Normal file
66
view/theme/dispy/css/reset.less
Normal file
|
@ -0,0 +1,66 @@
|
|||
///* http://meyerweb.com/eric/tools/css/reset/
|
||||
// v2.0 | 20110126
|
||||
// License: none (public domain)
|
||||
//*/
|
||||
|
||||
html, body, div, span,
|
||||
applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre, a,
|
||||
abbr, acronym, address,
|
||||
big, cite, code, del,
|
||||
dfn, em, img, ins, kbd,
|
||||
q, s, samp, small, strike,
|
||||
strong, sub, sup, tt, var,
|
||||
b, u, i, center, dl, dt,
|
||||
dd, ol, ul, li, fieldset,
|
||||
form, label, legend, table,
|
||||
caption, tbody, tfoot, thead,
|
||||
tr, th, td, article, aside,
|
||||
canvas, details, embed,
|
||||
figure, figcaption, footer,
|
||||
header, hgroup, menu, nav,
|
||||
output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
///* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ul, ol {
|
||||
.list_reset;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
///* de-italicize address */
|
||||
address {
|
||||
font-style: normal;
|
||||
}
|
||||
a img,
|
||||
:link img,
|
||||
:visited img {
|
||||
border: none;
|
||||
}
|
||||
q {
|
||||
quotes: "" "";
|
||||
}
|
|
@ -13,6 +13,9 @@
|
|||
// you "compile" the css (with `lessc`), but css (/**/) comments
|
||||
// do. i use them to our advantage :).
|
||||
|
||||
// import our reset styles first
|
||||
@import "../css/reset";
|
||||
|
||||
//* backgrounds */
|
||||
@dk_bg_colour: #1d1f1d;
|
||||
@bg_colour: #2e2f2e;
|
||||
|
@ -138,7 +141,7 @@
|
|||
}
|
||||
//* font size sizing */
|
||||
.default_font () {
|
||||
font-size: 16px;
|
||||
font-size: 14pt;
|
||||
line-height: 1.1em;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}
|
||||
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}
|
||||
body{line-height:1;}
|
||||
ul,ol{margin:0px;padding:0px;list-style:none;list-style-position:inside;}
|
||||
blockquote,q{quotes:none;}
|
||||
blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}
|
||||
table{border-collapse:collapse;border-spacing:0;}
|
||||
address{font-style:normal;}
|
||||
a img,:link img,:visited img{border:none;}
|
||||
q{quotes:"" "";}
|
||||
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
|
||||
audio,canvas,video,time{display:inline-block;*display:inline;*zoom:1;}
|
||||
audio:not([controls]),[hidden]{display:none;}
|
||||
html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
|
||||
body{margin:0;padding:0;font-size:16px;line-height:1.1em;font-family:sans-serif;color:#eeeecc;background-color:#2e2f2e;}
|
||||
body{margin:0;padding:0;font-size:14pt;line-height:1.1em;font-family:sans-serif;color:#eeeecc;background-color:#2e2f2e;}
|
||||
button,input,select,textarea{color:#eeeecc;background-color:#2e2f2e;}
|
||||
select{border:1px #555 dotted;padding:1px;margin:3px;color:#eeeecc;background:#2e2f2e;}
|
||||
select{border:1px dotted #555555;padding:1px;margin:3px;color:#eeeecc;background:#2e2f2e;max-width:85%;min-width:85px;}
|
||||
option{padding:1px;color:#eeeecc;background:#2e2f2e;}option[selected="selected"]{color:#2e2f2e;background:#eeeecc;}
|
||||
ul,ol{margin:0px;padding:0px;list-style:none;list-style-position:inside;}
|
||||
tr:nth-child(even){background-color:#474947;}
|
||||
:focus{outline:0;}
|
||||
[disabled="disabled"]{background:#4e4f4e;color:#ddddbb;}
|
||||
|
@ -23,18 +32,23 @@ sup{top:-0.5em;}
|
|||
img{border:0 none;}
|
||||
a{color:#88a9d2;text-decoration:none;margin-bottom:1px;}a:hover{color:#638ec4;border-bottom:1px dotted #638ec4;}
|
||||
a:hover img{text-decoration:none;}
|
||||
blockquote{background:#444;color:#eeeecc;text-indent:5px;padding:5px;border:1px #aaa solid;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
blockquote{background:#444444;color:#eeeecc;text-indent:5px;padding:5px;border:1px solid #9a9a9a;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
label{width:38%;display:inline-block;font-size:0.95em;margin:0 10px 1em 0;border:1px solid #2e2f2e;padding:5px;background:#eeeecc;color:#111111;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;}
|
||||
input{width:250px;height:25px;border:1px solid #999999;}input[type="checkbox"],input[type="radio"]{margin:0;width:15px;height:15px;}
|
||||
input[type="submit"],input[type="button"]{background-color:#eeeeee;border:2px outset #b1b1b1;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 3px 4px 0 #111111;-o-box-shadow:1px 3px 4px 0 #111111;-webkit-box-shadow:1px 3px 4px 0 #111111;-ms-box-shadow:1px 3px 4px 0 #111111;box-shadow:1px 3px 4px 0 #111111;color:#2e302e;cursor:pointer;font-weight:bold;width:auto;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;}
|
||||
input[type="submit"]:active,input[type="button"]:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
h1,h2,h3,h4,h5,h6{margin:10px 0px;font-weight:bold;border-bottom:1px solid #638ec4;}
|
||||
.required{display:inline;color:#ff0;font-size:16px;font-weight:bold;margin:3px;}
|
||||
.fakelink,.lockview{color:#88a9d2;cursor:pointer;}
|
||||
.fakelink:hover{color:#638ec4;}
|
||||
.smalltext{font-size:0.7em;}
|
||||
#panel{position:absolute;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #eeeeee;background-color:#2e302e;color:#eeeecc;padding:1em;}
|
||||
.pager{margin-top:60px;display:block;clear:both;text-align:center;}.pager span{padding:4px;margin:4px;}
|
||||
.pager_current{background-color:#88a9d2;color:#eeeeee;}
|
||||
.pager{margin-top:60px;display:block;clear:both;text-align:center;font-size:small;font-weight:bold;}.pager span{padding:4px;margin:4px;}
|
||||
.pager_current{background-color:#88a9d2;color:#2e2f2e;}
|
||||
.action{margin:5px 0;}
|
||||
.tool{margin:5px 0;list-style:none;}
|
||||
#articlemain{width:100%;height:100%;margin:0 auto;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#2e2f2e;background:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;padding:3px;margin:5px 0;font-weight:bold;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#2e2f2e;background:#eeeecc;margin:3px 10px 7px 0;padding:6px 7px;font-weight:bold;font-size:smaller;}
|
||||
#asidemain .field{overflow:hidden;width:200px;}
|
||||
#login-extra-links{overflow:auto !important;padding-top:60px !important;width:100% !important;}#login-extra-links a{margin-right:20px;}
|
||||
#login_standard{display:block !important;float:none !important;height:100% !important;position:relative !important;width:100% !important;}#login_standard .field label{width:200px !important;}
|
||||
|
@ -46,7 +60,7 @@ blockquote{background:#444;color:#eeeecc;text-indent:5px;padding:5px;border:1px
|
|||
#login_openid label{width:180px !important;}
|
||||
nav{height:60px;background-color:#1d1f1d;color:#eeeeee;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeee;border:0px;}nav a:hover{text-decoration:none;color:#eeeeee;border:0px;}
|
||||
nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
|
||||
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;}ul#user-menu-popup li a:hover{color:#eeeecc;background-color:#2e302e;}
|
||||
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;}ul#user-menu-popup li a:hover{color:#eeeecc;background-color:#2e302e;}
|
||||
ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;}
|
||||
nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(dark/icons.png) 0 0 no-repeat;}
|
||||
#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
|
||||
|
@ -71,7 +85,7 @@ div.jGrowl div.info{background:#1353b1 url("../../../images/icons/48/info.png")
|
|||
#nav-notifications-menu a:hover{color:black;text-decoration:underline;}
|
||||
nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
|
||||
.show{display:block;}
|
||||
#notifications{width:170px;height:20px;position:absolute;top:-19px;left:4px;}
|
||||
#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
|
||||
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#1d1f1d;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:300px;height:60px;}
|
||||
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
|
||||
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(dark/icons.png) -190px -60px no-repeat;}
|
||||
|
@ -79,7 +93,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#search-text{border:1px solid #eeeecc;background:#2e2f2e;color:#eeeecc;font-size:8pt;margin:8px;width:10em;height:14px;}
|
||||
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
|
||||
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
|
||||
#user-menu-label{font-size:12px;padding:3px 20px 9px 5px;height:10px;}
|
||||
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
|
||||
.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#222;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
|
||||
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
|
||||
#net-update{background-position:0px 0px;}
|
||||
|
@ -99,14 +113,14 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeecc;}
|
||||
#asidemain{float:left;font-size:smaller;margin:20px 0 20px 35px;width:25%;display:inline;}
|
||||
#asidemain{float:left;font-size:0.75em;margin:20px 0 20px 35px;width:25%;display:inline;}
|
||||
#asideright,#asideleft{display:none;}
|
||||
.vcard .fn{font-size:1.7em;font-weight:bold;border-bottom:1px solid #729fcf;padding-bottom:3px;}
|
||||
.vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #638ec4;padding-bottom:3px;}
|
||||
.vcard #profile-photo-wrapper{margin:20px;}.vcard #profile-photo-wrapper img{-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
|
||||
#asidemain h4{font-size:1.2em;}
|
||||
#asidemain #viewcontacts{text-align:right;}
|
||||
#asidemain #contact-block{width:99%;}#asidemain #contact-block .contact-block-content{width:99%;}#asidemain #contact-block .contact-block-content .contact-block-div{float:left;margin:0 5px 5px 0;width:50px;height:50px;padding:3px;position:relative;}
|
||||
.aprofile dt{background:#eeeecc;color:#2e2f2e;font-weight:bold;-moz-box-shadow:1px 1px 5px 0 5px 5px 0px #111111;-o-box-shadow:1px 1px 5px 0 5px 5px 0px #111111;-webkit-box-shadow:1px 1px 5px 0 5px 5px 0px #111111;-ms-box-shadow:1px 1px 5px 0 5px 5px 0px #111111;box-shadow:1px 1px 5px 0 5px 5px 0px #111111;margin:15px 0 5px;padding-left:5px;}
|
||||
.aprofile dt{background:#eeeecc;color:#2e2f2e;font-weight:bold;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:15px 0 5px;padding-left:5px;}
|
||||
#profile-extra-links ul{margin-left:0px;padding-left:0px;list-style:none;}
|
||||
#dfrn-request-link{-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#eeeecc;display:block;font-size:1.2em;padding:0.2em 0.5em;background-color:#3465a4;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE4SURBVCiRpZKxLgRRFIa//64dKruZFRIlolBviFKiVHsHrRaFikTCC+hEQtRegMQDqDUKJOPOvauSMJmjYEU2M0viT071/+fLOTlHZkadQgjLkh1LPEoj661WKw5mXG034JxtAgtmrJoVK5WZYYCy1AVQSOYbjeSqMmRmQ8v755Ne77lb5w+d4HMNJopCT7X+bwDQZKfTyf4BIAHeawHe+/kQ/FGM+QagvpFl2VSM/tyMmV7PV14AYMQ5nUp0AULIp0HXzpVvSdLYMmNVAjNdAuNAUQHgxy/ZvEQTSMw0A33DxkIIi2ma3gwC9PKSzRWF2wbdpml62DfyPF9yjlNgAnQGLJjZnXON3Xa7ff8NGPbKQPNrbAOI0a9J2ilLEzAL7P0GqJJizF+BUeDhL2cclJnZPvAg6eADf+imKjSMX1wAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:95% center;}
|
||||
#wallmessage-link{color:#eeeeee;display:block;font-size:1.2em;padding:0.2em 0.5em;}
|
||||
|
@ -141,7 +155,6 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#profile-jot-submit-wrapper{float:right;width:100%;margin:10px 0 0 0;padding:0;}
|
||||
#profile-jot-submit{height:auto;background-color:#555753;color:#eeeeee;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:2px outset #2e3436;margin:0;float:right;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;width:auto;}#profile-jot-submit:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
#jot-perms-icon{width:20px;height:22px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;}
|
||||
#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555555;border-top:0;display:block !important;border:1px solid #555753 solid #eeeecc;-moz-box-shadow:5px 5px 5px 0px #111111;-o-box-shadow:5px 5px 5px 0px #111111;-webkit-box-shadow:5px 5px 5px 0px #111111;-ms-box-shadow:5px 5px 5px 0px #111111;box-shadow:5px 5px 5px 0px #111111;}
|
||||
#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper,#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{width:47%;}
|
||||
#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper{float:left;}
|
||||
#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{float:right;}
|
||||
|
@ -153,7 +166,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#jot-title-wrapper{margin-bottom:5px;}
|
||||
#jot-title-display{font-weight:bold;}
|
||||
.jothidden{display:none;}
|
||||
#jot-preview-content{background-color:#2e302e;color:#eeeecc;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;}
|
||||
#jot-preview-content{background-color:#2e302e;color:#eeeecc;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
|
||||
.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;font-weight:bold;}
|
||||
.tab{border:1px solid #88a9d2;padding:4px;}.tab:hover,.tab.active:hover,.tab:active{background:#88a9d2;color:#2e2f2e;}
|
||||
|
@ -161,26 +174,26 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
.tab a{border:0;text-decoration:none;}
|
||||
.wall-item-outside-wrapper{border:1px solid #aaaaaa;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;}.wall-item-outside-wrapper.comment{margin-top:5px;}
|
||||
.wall-item-outside-wrapper-end{clear:both;}
|
||||
.wall-item-content-wrapper{position:relative;padding:10px;width:auto;}
|
||||
.wall-item-content-wrapper{position:relative;padding:0.75em;width:auto;}
|
||||
.wall-item-outside-wrapper .wall-item-comment-wrapper{}
|
||||
.shiny{background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
.wall-outside-wrapper .shiny{-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
.heart{color:red;}
|
||||
.wall-item-content{overflow-x:auto;margin:0px 15px 0px 5px;}
|
||||
[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:15px 0 0 0;padding:0px;}
|
||||
.wall-item-content{overflow-x:auto;margin:0px 4em 1em 5px;}
|
||||
[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
|
||||
.wall-item-photo-menu{display:none;}
|
||||
.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(dark/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
|
||||
.wall-item-info{float:left;width:110px;}
|
||||
.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
|
||||
.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
|
||||
.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:20px 0 30px -20px;padding:0;}
|
||||
.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-75px 0 0 5px;padding:0;}
|
||||
.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1em;}
|
||||
.wall-item-body{margin:20px 20px 10px 0px;text-align:left;overflow-x:auto;}
|
||||
.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;}
|
||||
.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;}
|
||||
.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;}
|
||||
.wall-item-body{margin:15px 10px 10px 0px;text-align:left;overflow-x:auto;}
|
||||
.wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;}
|
||||
.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 120px;}
|
||||
.wall-item-author,.wall-item-actions-author{clear:left;font-size:0.8em;color:#888b85;margin:20px 20px 0 110px;}
|
||||
.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
|
||||
.wall-item-author,.wall-item-actions-author{clear:left;float:left;font-size:0.8em;color:#888b85;margin:1em auto 0 0.2em;}
|
||||
.wall-item-ago{display:inline;padding-left:10px;}
|
||||
.wall-item-wrapper-end{clear:both;}
|
||||
.wall-item-location{margin-top:15px;width:100px;overflow:hidden;-moz-text-overflow:ellipsis;-ms-text-verflow:ellipsis;-o-text-overflow:ellipsis;-webkit-text-overflow:ellipsis;text-overflow:ellipsis;}.wall-item-location .icon{float:left;}
|
||||
|
@ -192,13 +205,13 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
.wall-item-photo-menu{min-width:92px;border:2px solid #ffffff;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 2px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;}
|
||||
#item-delete-selected{overflow:auto;width:100%;}
|
||||
#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
|
||||
.ccollapse-wrapper{font-size:0.9em;margin-left:80px;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:80px;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-info{width:60px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-body{margin-left:10px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-author{margin-left:50px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
|
||||
.comment-wwedit-wrapper{}
|
||||
.comment-edit-wrapper{border-top:1px #aaa solid;}
|
||||
|
@ -206,7 +219,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
.comment-wwedit-wrapper img,.comment-edit-wrapper img{width:20px;height:20px;}
|
||||
.comment-edit-photo-link,.comment-edit-photo{margin-left:10px;}
|
||||
.my-comment-photo{width:40px;height:40px;padding:5px;}
|
||||
[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:84.5%;}
|
||||
[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:94%;}
|
||||
.comment-edit-text-empty{height:20px;border:2px #c8bebe solid;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#c8bebe;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.comment-edit-text-empty:hover{color:#999999;}
|
||||
.comment-edit-text-full{height:10em;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
|
||||
.comment-edit-submit-wrapper{width:90%;margin:5px 5px 10px 50px;text-align:right;}
|
||||
|
@ -266,11 +279,12 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
|
|||
.mail-conv-subject{clear:right;font-weight:bold;font-size:1.2em;}
|
||||
.mail-conv-body{clear:both;}
|
||||
.mail-conv-delete-wrapper{margin-top:5px;}
|
||||
.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
|
||||
.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:135px;padding:3px;position:relative;}
|
||||
.contact-direction-wrapper{position:absolute;top:20px;}
|
||||
.contact-edit-links{position:absolute;top:60px;}
|
||||
.contact-entry-photo{margin-left:20px;}
|
||||
.contact-entry-name{width:120px;font-weight:bold;}
|
||||
.contact-entry-name{width:120px;font-weight:bold;font-size:small;}
|
||||
.contact-entry-details{font-size:x-small;}
|
||||
.contact-entry-photo{position:relative;}
|
||||
.contact-entry-edit-links .icon{border:1px solid #babdb6;-o-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-color:white;}
|
||||
#contact-entry-url,[id^="contact-entry-url"],#contact-entry-network,[id^="contact-entry-network"]{font-size:smaller;}
|
||||
|
@ -395,7 +409,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
|
|||
#adminpage .selectall{text-align:right;}
|
||||
#adminpage #users a{color:#eeeecc;text-decoration:underline;}
|
||||
#users .name{color:#eeeecc;}
|
||||
.field{overflow:auto;}.field label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px #2e2f2e solid;padding:5px;background:#eeeecc;color:#111;}
|
||||
.field{overflow:auto;}.field label{width:38%;display:inline-block;margin:0 10px 1em 0;border:1px #2e2f2e solid;padding:5px;background:#eeeecc;color:#111;}
|
||||
.field .onoff{float:right;margin:0 330px 0 auto;width:80px;}.field .onoff a{display:block;border:1px solid #666666;padding:3px 6px 4px 10px;height:16px;text-decoration:none;}
|
||||
.field .onoff .on,.field .onoff .off{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAUACIDASIAAhEBAxEB/8QAGgABAQACAwAAAAAAAAAAAAAAAAQDBQEGCf/EACgQAAIBAwIFAwUAAAAAAAAAAAECAAMEERIUBRMxUpEhIoEjM1Nxkv/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgT/xAAaEQEAAgMBAAAAAAAAAAAAAAAAAQIRMVES/9oADAMBAAIRAxEAPwD1ERKFNFVaNNVUYACgACcNVt1dEKUwzZwNI9cSDczDVdnuKDjomrPyJOQ2SXNq/L0rTPMzp9vXHWZfo/jT+RNFQV6e2yPt6s/Ms3EWQofhnDqjszWFqzMcljRUknxEn3ES/dup8xxPZ0hXtKFViQzorEDpkiZtqvc3mIkzs40bVe5vMbVe5vMREbrN3xy4t7utSVaZVHZQSDnAP7iIm+K1xpkm09f/2Q==');background-repeat:no-repeat;}
|
||||
.field .onoff .on{background-position:42px 1px;background-color:#999999;color:#111111;text-align:left;}
|
||||
|
@ -404,10 +418,6 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
|
|||
.field textarea{width:80%;height:100px;}
|
||||
.field_help{display:block;margin-left:297px;color:#b1b1b1;}
|
||||
.field.radio .field_help{margin-left:297px;}
|
||||
label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px solid #2e2f2e;padding:5px;background:#eeeecc;color:#111111;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;}
|
||||
input{width:250px;height:25px;border:1px solid #999999;}input[type="checkbox"],input[type="radio"]{margin:0;width:15px;height:15px;}
|
||||
input[type="submit"],input[type="button"]{background-color:#eeeeee;border:2px outset #b1b1b1;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 3px 4px 0 #111111;-o-box-shadow:1px 3px 4px 0 #111111;-webkit-box-shadow:1px 3px 4px 0 #111111;-ms-box-shadow:1px 3px 4px 0 #111111;box-shadow:1px 3px 4px 0 #111111;color:#2e302e;cursor:pointer;font-weight:bold;width:auto;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;}
|
||||
input[type="submit"]:active,input[type="button"]:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
.popup{width:100%;height:100%;top:0px;left:0px;position:absolute;display:none;}.popup .background{background-color:#111111;opacity:0.5;width:100%;height:100%;position:absolute;top:0px;left:0px;}
|
||||
.popup .panel{top:25%;left:25%;width:50%;height:50%;padding:1em;position:absolute;border:4px solid #000000;background-color:white;}
|
||||
#panel{z-index:100;}
|
||||
|
@ -488,6 +498,7 @@ input[type="submit"]:active,input[type="button"]:active{-moz-box-shadow:0 0 0 0
|
|||
footer{display:block;clear:both;}
|
||||
#profile-jot-text{height:20px;color:#eeeecc;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:99.5%;}
|
||||
#photo-edit-perms-select,#photos-upload-permissions-wrapper,#profile-jot-acl-wrapper{display:block !important;background:#2e2f2e;color:#eeeecc;}
|
||||
#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;}
|
||||
#acl-wrapper{width:660px;margin:0 auto;}
|
||||
#acl-search{float:right;background:#ffffff url("../../../images/search_18.png") no-repeat right center;padding-right:20px;margin:6px;color:#111111;}
|
||||
#acl-showall{float:left;display:block;width:auto;height:18px;background:#eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;padding:7px 10px 7px 30px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#999999;margin:5px 0;}#acl-showall.selected{color:black;background:#ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;}
|
||||
|
@ -513,4 +524,4 @@ footer{display:block;clear:both;}
|
|||
#sidebar-page-list ul{padding:0;margin:5px 0;}
|
||||
#sidebar-page-list li{list-style:none;}
|
||||
#jappix_mini{margin-left:130px;position:fixed;bottom:0;right:175px !important;z-index:999;}
|
||||
@media handheld{body{font-size:15pt;}}@media only screen and (min-device-width:320px) and (max-device-width:480px){body{font-size:10px;}}@media only screen and (min-width:321px){body{font-size:10px;}}@media only screen and (max-width:320px){body{font-size:10px;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px){body{font-size:16px;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape){body{font-size:16px;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:portrait){body{font-size:16px;}}@media only screen and (min-width:1024px){body{font-size:16px;}}@media only screen and (min-width:1520px){body{font-size:18px;}}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){body{font-size:16px;}}
|
||||
@media handheld and screen{body{font-size:15pt;}}@media only screen and (min-device-width:320px) and (max-device-width:480px){body{font-size:12pt;}}@media only screen and (min-width:321px){body{font-size:12pt;}}@media only screen and (max-width:320px){body{font-size:12pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px){body{font-size:14pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape){body{font-size:14pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:portrait){body{font-size:14pt;}}@media only screen and (min-width:1024px){body{font-size:14pt;}}@media only screen and (min-width:1520px){body{font-size:16pt;}}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){body{font-size:14pt;}}
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
/*
|
||||
* dispy-dark
|
||||
*
|
||||
* dispy dark
|
||||
* Description: Dispy Dark: dark, sleek, functional
|
||||
* author, maintainer: simon <http://simon.kisikew.org/>
|
||||
*
|
||||
* Author's notes:
|
||||
* A few things of note here. The less file is our working copy,
|
||||
* and the CSS is *generated* from it. The CSS is the one that's
|
||||
* included in the HTML, and not the less one. This is to save
|
||||
* bandwidth and processing time.
|
||||
* bandwidth and processing time, by not including less.js.
|
||||
*/
|
||||
/* from html5boilerplate */
|
||||
/* these are to tell browsers they should be displayed a certain way */
|
||||
|
||||
@import "_base";
|
||||
|
||||
///* from html5boilerplate */
|
||||
///* these are to tell browsers they should be displayed a certain way */
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
|
@ -37,12 +37,12 @@ time {
|
|||
audio:not([controls]), [hidden] {
|
||||
display: none;
|
||||
}
|
||||
/*
|
||||
* 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
|
||||
* 2. Force vertical scrollbar in non-IE
|
||||
* 3. Prevent iOS text size adjust on device orientation change,
|
||||
* without disabling user zoom: h5bp.com/g
|
||||
*/
|
||||
///*
|
||||
// * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
|
||||
// * 2. Force vertical scrollbar in non-IE
|
||||
// * 3. Prevent iOS text size adjust on device orientation change,
|
||||
// * without disabling user zoom: h5bp.com/g
|
||||
// */
|
||||
html {
|
||||
font-size: 100%;
|
||||
overflow-y: scroll;
|
||||
|
@ -61,11 +61,13 @@ button, input, select, textarea {
|
|||
background-color: @bg_colour;
|
||||
}
|
||||
select {
|
||||
border: 1px #555 dotted;
|
||||
.borders(1px, dotted, darken(@main_alt_colour, 60%));
|
||||
padding: 1px;
|
||||
margin: 3px;
|
||||
color: @main_colour;
|
||||
background: @bg_colour;
|
||||
max-width: 85%;
|
||||
min-width: 85px;
|
||||
}
|
||||
option {
|
||||
padding: 1px;
|
||||
|
@ -76,13 +78,10 @@ option {
|
|||
background: @main_colour;
|
||||
}
|
||||
}
|
||||
ul, ol {
|
||||
.list_reset;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: lighten(@bg_colour, 10%);
|
||||
}
|
||||
/* remember to define focus styles! */
|
||||
///* remember to define focus styles! */
|
||||
:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
@ -90,7 +89,7 @@ tr:nth-child(even) {
|
|||
background: @med_bg_colour;
|
||||
color: @disabled_colour;
|
||||
}
|
||||
/* remember to highlight inserts somehow! */
|
||||
///* remember to highlight inserts somehow! */
|
||||
ins, mark {
|
||||
background-color: @bg_alt_colour;
|
||||
color: @lt_main_colour;
|
||||
|
@ -102,14 +101,19 @@ mark {
|
|||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* Redeclare monospace font family: h5bp.com/j */
|
||||
pre, code, kbd, samp, .wall-item-body code {
|
||||
///* Redeclare monospace font family: h5bp.com/j */
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp,
|
||||
.wall-item-body code {
|
||||
font-family: monospace, monospace;
|
||||
_font-family: monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
/* Improve readability of pre-formatted text in all browsers */
|
||||
pre, .wall-item-body code {
|
||||
///* Improve readability of pre-formatted text in all browsers */
|
||||
pre,
|
||||
.wall-item-body code {
|
||||
.wrap;
|
||||
}
|
||||
q {
|
||||
|
@ -122,7 +126,8 @@ q {
|
|||
small {
|
||||
font-size: 85%;
|
||||
}
|
||||
/* Position subscript and superscript content without affecting line-height: h5bp.com/k */
|
||||
///* Position subscript and superscript content without affecting
|
||||
// * line-height: h5bp.com/k */
|
||||
sub, sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
|
@ -151,13 +156,57 @@ a {
|
|||
}
|
||||
}
|
||||
blockquote {
|
||||
background: #444;
|
||||
background: darken(@main_alt_colour, 66.5%);
|
||||
color: @main_colour;
|
||||
text-indent: 5px;
|
||||
padding: 5px;
|
||||
border: 1px #aaa solid;
|
||||
.borders(1px, solid, darken(@main_alt_colour, 33%));
|
||||
.rounded_corners;
|
||||
}
|
||||
label {
|
||||
width: 38%;
|
||||
display: inline-block;
|
||||
font-size: 0.95em;
|
||||
margin: 0 10px 1em 0;
|
||||
.borders(1px, solid, @bg_colour);
|
||||
padding: 5px;
|
||||
background: @main_colour;
|
||||
color: darken(@main_alt_colour, 86.5%);
|
||||
.box_shadow(3px, 3px, 5px);
|
||||
}
|
||||
input {
|
||||
.box(250px, 25px);
|
||||
.borders(1px, solid, darken(@main_alt_colour, 33.5%));
|
||||
&[type="checkbox"],
|
||||
&[type="radio"] {
|
||||
margin: 0;
|
||||
.box(15px, 15px);
|
||||
}
|
||||
&[type="submit"],
|
||||
&[type="button"] {
|
||||
background-color: @main_alt_colour;
|
||||
.borders(2px, outset, darken(@main_alt_colour, 24%));
|
||||
.rounded_corners;
|
||||
.box_shadow(1px, 3px, 4px, 0);
|
||||
color: @bg_alt_colour;
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
width: auto;
|
||||
.text_shadow;
|
||||
}
|
||||
&[type="submit"]:active,
|
||||
&[type="button"]:active {
|
||||
.box_shadow(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
h1, h2, h3,
|
||||
h4, h5, h6 {
|
||||
margin: 10px 0px;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid @hover_colour;
|
||||
}
|
||||
|
||||
//
|
||||
.required {
|
||||
display: inline;
|
||||
color: #ff0;
|
||||
|
@ -188,6 +237,8 @@ blockquote {
|
|||
display: block;
|
||||
clear: both;
|
||||
text-align: center;
|
||||
font-size: small;
|
||||
font-weight: bold;
|
||||
span {
|
||||
padding: 4px;
|
||||
margin: 4px;
|
||||
|
@ -195,7 +246,7 @@ blockquote {
|
|||
}
|
||||
.pager_current {
|
||||
background-color: @link_colour;
|
||||
color: @main_alt_colour;
|
||||
color: @bg_colour;
|
||||
}
|
||||
|
||||
|
||||
|
@ -217,11 +268,12 @@ blockquote {
|
|||
[class$="-desc"], [id$="-desc"] {
|
||||
color: @bg_colour;
|
||||
background: @main_colour;
|
||||
.rounded_corners;
|
||||
.box_shadow(3px, 3px, 5px);
|
||||
padding: 3px;
|
||||
margin: 5px 0;
|
||||
// .rounded_corners;
|
||||
// .box_shadow(3px, 3px, 5px);
|
||||
margin: 3px 10px 7px 0;
|
||||
padding: 6px 7px;
|
||||
font-weight: bold;
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
|
||||
|
@ -276,7 +328,8 @@ blockquote {
|
|||
overflow: hidden !important; }
|
||||
label {
|
||||
width: 180px !important;
|
||||
} }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -315,6 +368,8 @@ ul#user-menu-popup {
|
|||
margin: 0px;
|
||||
top: 20px;
|
||||
left: 0;
|
||||
font-size: small;
|
||||
line-height: 1;
|
||||
.rounded_corners(0 0 5px 5px);
|
||||
.box_shadow(5px, 5px, 10px, 0px);
|
||||
z-index: 10000;
|
||||
|
@ -378,7 +433,8 @@ nav .nav-link {
|
|||
&:hover {
|
||||
background-position: -66px -88px; }
|
||||
}
|
||||
#nav-notify-link, #nav-notifications-linkmenu {
|
||||
#nav-notify-link,
|
||||
#nav-notifications-linkmenu {
|
||||
background-position: -44px -110px;
|
||||
}
|
||||
#nav-notify-link:hover {
|
||||
|
@ -417,9 +473,7 @@ nav .nav-link {
|
|||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* popup notifications */
|
||||
|
||||
//* popup notifications */
|
||||
div.jGrowl div {
|
||||
&.notice {
|
||||
background: @notice url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
|
@ -434,7 +488,6 @@ div.jGrowl div {
|
|||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
#nav-notifications-menu {
|
||||
margin: 30px 0 0 -20px;
|
||||
width: 275px;
|
||||
|
@ -458,9 +511,9 @@ div.jGrowl div {
|
|||
}
|
||||
a:hover {
|
||||
color: black;
|
||||
text-decoration: underline; }
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
nav #nav-notifications-linkmenu {
|
||||
&.on .icon.s22.notify,
|
||||
&.selected .icon.s22.notify {
|
||||
|
@ -473,9 +526,10 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
#notifications {
|
||||
.box(170px, 20px);
|
||||
position: absolute;
|
||||
font-size: small;
|
||||
top: -19px;
|
||||
left: 4px;
|
||||
position: absolute;
|
||||
}
|
||||
#nav-floater {
|
||||
position: fixed;
|
||||
|
@ -560,7 +614,7 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
}
|
||||
#user-menu-label {
|
||||
font-size: 12px;
|
||||
font-size: small;
|
||||
padding: 3px 20px 9px 5px;
|
||||
height: 10px;
|
||||
}
|
||||
|
@ -700,7 +754,7 @@ nav #nav-notifications-linkmenu {
|
|||
*/
|
||||
#asidemain {
|
||||
float: left;
|
||||
font-size: smaller;
|
||||
font-size: 0.75em;
|
||||
margin: 20px 0 20px 35px;
|
||||
width: 25%;
|
||||
display: inline;
|
||||
|
@ -712,9 +766,9 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.vcard {
|
||||
.fn {
|
||||
font-size: 1.7em;
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #729fcf;
|
||||
border-bottom: 1px solid @hover_colour;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
#profile-photo-wrapper {
|
||||
|
@ -746,7 +800,8 @@ nav #nav-notifications-linkmenu {
|
|||
background: @main_colour;
|
||||
color: @bg_colour;
|
||||
font-weight: bold;
|
||||
.box_shadow(1px 1px 5px 0);
|
||||
.box_shadow(3px, 3px, 5px);
|
||||
.rounded_corners;
|
||||
margin: 15px 0 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
@ -981,14 +1036,6 @@ nav #nav-notifications-linkmenu {
|
|||
.rounded_corners;
|
||||
overflow: hidden;
|
||||
}
|
||||
#profile-jot-acl-wrapper {
|
||||
margin: 0 10px;
|
||||
.borders(1px, solid, darken(@main_alt_colour, 60%));
|
||||
border-top: 0;
|
||||
display: block !important;
|
||||
.borders(1px solid @menu_bg_colour);
|
||||
.box_shadow;
|
||||
}
|
||||
#group_allow_wrapper,
|
||||
#group_deny_wrapper,
|
||||
#acl-permit-outer-wrapper,
|
||||
|
@ -1046,10 +1093,12 @@ nav #nav-notifications-linkmenu {
|
|||
color: @main_colour;
|
||||
.borders(1px, solid, @main_colour);
|
||||
.rounded_corners;
|
||||
.box_shadow(5px, 0, 10px);
|
||||
padding: 3px 3px 6px 10px;
|
||||
.wall-item-outside-wrapper {
|
||||
border: 0;
|
||||
.rounded_corners(0px 0px 0px 0px);
|
||||
.box_shadow(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1115,7 +1164,7 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-content-wrapper {
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
padding: 0.75em;
|
||||
width: auto;
|
||||
}
|
||||
.wall-item-outside-wrapper .wall-item-comment-wrapper {
|
||||
|
@ -1133,10 +1182,11 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-content {
|
||||
overflow-x: auto;
|
||||
margin: 0px 15px 0px 5px;
|
||||
margin: 0px 4em 1em 5px;
|
||||
}
|
||||
[id^="tread-wrapper"], [class^="tread-wrapper"] {
|
||||
margin: 15px 0 0 0;
|
||||
[id^="tread-wrapper"],
|
||||
[class^="tread-wrapper"] {
|
||||
margin: 1.2em 0 0 0;
|
||||
padding: 0px;
|
||||
}
|
||||
.wall-item-photo-menu {
|
||||
|
@ -1182,22 +1232,22 @@ nav #nav-notifications-linkmenu {
|
|||
.wall-item-subtools1 {
|
||||
.box(30px, 30px);
|
||||
list-style: none outside none;
|
||||
margin: 20px 0 30px -20px;
|
||||
margin: 18px 0 30px -20px;
|
||||
padding: 0;
|
||||
}
|
||||
.wall-item-subtools2 {
|
||||
.box(25px, 25px);
|
||||
list-style: none outside none;
|
||||
margin: -75px 0 0 5px;
|
||||
margin: -78px 0 0 5px;
|
||||
padding: 0;
|
||||
}
|
||||
.wall-item-title {
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
margin-bottom: 1em;
|
||||
margin-bottom: 1.4em;
|
||||
}
|
||||
.wall-item-body {
|
||||
margin: 20px 20px 10px 0px;
|
||||
margin: 15px 10px 10px 0px;
|
||||
text-align: left;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
@ -1212,14 +1262,20 @@ nav #nav-notifications-linkmenu {
|
|||
clear: left;
|
||||
font-size: 0.8em;
|
||||
color: lighten(@menu_bg_colour, 20%);
|
||||
margin: 5px 0 5px 120px;
|
||||
margin: 5px 0 5px 10.2em;
|
||||
.transition;
|
||||
opacity: 0.5;
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.wall-item-author,
|
||||
.wall-item-actions-author {
|
||||
clear: left;
|
||||
float: left;
|
||||
font-size: 0.8em;
|
||||
color: lighten(@menu_bg_colour, 20%);
|
||||
margin: 20px 20px 0 110px;
|
||||
margin: 1em auto 0 0.2em;
|
||||
}
|
||||
.wall-item-ago {
|
||||
display: inline;
|
||||
|
@ -1309,10 +1365,10 @@ nav #nav-notifications-linkmenu {
|
|||
*/
|
||||
.ccollapse-wrapper {
|
||||
font-size: 0.9em;
|
||||
margin-left: 80px;
|
||||
margin-left: 5em;
|
||||
}
|
||||
.wall-item-outside-wrapper.comment {
|
||||
margin-left: 80px;
|
||||
margin-left: 5em;
|
||||
.wall-item-photo {
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
|
@ -1332,7 +1388,7 @@ nav #nav-notifications-linkmenu {
|
|||
margin-left: 10px;
|
||||
}
|
||||
.wall-item-author {
|
||||
margin-left: 50px;
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
.wall-item-photo-menu {
|
||||
min-width: 50px;
|
||||
|
@ -1371,7 +1427,7 @@ nav #nav-notifications-linkmenu {
|
|||
|
||||
[class^="comment-edit-text"] {
|
||||
margin: 5px 0 10px 20px;
|
||||
width: 84.5%;
|
||||
width: 94%;
|
||||
}
|
||||
.comment-edit-text-empty {
|
||||
height: 20px;
|
||||
|
@ -1680,10 +1736,11 @@ div {
|
|||
/**
|
||||
* contacts
|
||||
*/
|
||||
.view-contact-wrapper, .contact-entry-wrapper {
|
||||
.view-contact-wrapper,
|
||||
.contact-entry-wrapper {
|
||||
float: left;
|
||||
margin: 0 5px 40px 0;
|
||||
.box(120px, 120px);
|
||||
.box(120px, 135px);
|
||||
padding: 3px;
|
||||
position: relative;
|
||||
}
|
||||
|
@ -1703,6 +1760,10 @@ div {
|
|||
.contact-entry-name {
|
||||
width: 120px;
|
||||
font-weight: bold;
|
||||
font-size: small;
|
||||
}
|
||||
.contact-entry-details {
|
||||
font-size: x-small;
|
||||
}
|
||||
.contact-entry-photo {
|
||||
position: relative;
|
||||
|
@ -2346,7 +2407,6 @@ div {
|
|||
label {
|
||||
width: 38%;
|
||||
display: inline-block;
|
||||
font-size: 1.077em;
|
||||
margin: 0 10px 1em 0;
|
||||
border: 1px @bg_colour solid;
|
||||
padding: 5px;
|
||||
|
@ -2396,42 +2456,6 @@ div {
|
|||
.field.radio .field_help {
|
||||
margin-left: 297px;
|
||||
}
|
||||
label {
|
||||
width: 38%;
|
||||
display: inline-block;
|
||||
font-size: 1.077em;
|
||||
margin: 0 10px 1em 0;
|
||||
.borders(1px, solid, @bg_colour);
|
||||
padding: 5px;
|
||||
background: @main_colour;
|
||||
color: darken(@main_alt_colour, 86.5%);
|
||||
.box_shadow(3px, 3px, 5px);
|
||||
}
|
||||
input {
|
||||
.box(250px, 25px);
|
||||
.borders(1px, solid, darken(@main_alt_colour, 33.5%));
|
||||
&[type="checkbox"],
|
||||
&[type="radio"] {
|
||||
margin: 0;
|
||||
.box(15px, 15px);
|
||||
}
|
||||
&[type="submit"],
|
||||
&[type="button"] {
|
||||
background-color: @main_alt_colour;
|
||||
.borders(2px, outset, darken(@main_alt_colour, 24%));
|
||||
.rounded_corners;
|
||||
.box_shadow(1px, 3px, 4px, 0);
|
||||
color: @bg_alt_colour;
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
width: auto;
|
||||
.text_shadow;
|
||||
}
|
||||
&[type="submit"]:active,
|
||||
&[type="button"]:active {
|
||||
.box_shadow(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
@ -2812,6 +2836,12 @@ footer {
|
|||
background: @bg_colour;
|
||||
color: @main_colour;
|
||||
}
|
||||
#profile-jot-acl-wrapper {
|
||||
margin: 0 10px;
|
||||
.borders(1px, solid, @menu_bg_colour);
|
||||
border-top: 0;
|
||||
// .box_shadow;
|
||||
}
|
||||
#acl-wrapper {
|
||||
width: 660px;
|
||||
margin: 0 auto;
|
||||
|
@ -2986,74 +3016,4 @@ footer {
|
|||
z-index: 999;
|
||||
}
|
||||
|
||||
|
||||
//* media stuff */
|
||||
@media handheld {
|
||||
body {
|
||||
font-size: 15pt;
|
||||
}
|
||||
}
|
||||
//* Smartphones (portrait and landscape) ----------- */
|
||||
@media only screen and (min-device-width: 320px)
|
||||
and (max-device-width: 480px) {
|
||||
body {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
//* Smartphones (landscape) ----------- */
|
||||
@media only screen and (min-width: 321px) {
|
||||
body {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
//* Smartphones (portrait) ----------- */
|
||||
@media only screen and (max-width: 320px) {
|
||||
body {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
//* iPads (portrait and landscape) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
//* iPads (landscape) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px)
|
||||
and (orientation: landscape) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
//* iPads (portrait) ----------- */
|
||||
@media only screen and (min-device-width: 768px)
|
||||
and (max-device-width: 1024px)
|
||||
and (orientation: portrait) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
//* Desktops and laptops ----------- */
|
||||
//adjusted to 1024 from 1224.
|
||||
//not everybody has a fucking big screen ffs
|
||||
@media only screen and (min-width: 1024px) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
//* Large screens - */
|
||||
@media only screen and (min-width: 1520px) {
|
||||
body {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
//* iPhone 4 ----------- */
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
|
||||
only screen and (min-device-pixel-ratio: 1.5) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@import "../css/media";
|
||||
|
|
|
@ -24,8 +24,8 @@ function initEditor(cb) {
|
|||
mode : "specific_textareas",
|
||||
editor_selector: $editselect,
|
||||
auto_focus: "profile-jot-text",
|
||||
plugins : "bbcode,paste,fullscreen,autoresize,inlinepopups",
|
||||
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code,fullscreen",
|
||||
plugins : "bbcode,paste,fullscreen,autoresize,inlinepopups,contextmenu,style",
|
||||
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code,fullscreen,charmap",
|
||||
theme_advanced_buttons2 : "",
|
||||
theme_advanced_buttons3 : "",
|
||||
theme_advanced_toolbar_location : "top",
|
||||
|
@ -98,7 +98,6 @@ function initEditor(cb) {
|
|||
$(".jothidden").show();
|
||||
if (typeof cb!="undefined") cb();
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
editor = true;
|
||||
|
@ -155,8 +154,6 @@ function enableOnUser(){
|
|||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
});
|
||||
|
||||
function deleteCheckedItems() {
|
||||
|
@ -345,5 +342,4 @@ function enableOnUser(){
|
|||
});
|
||||
$('#profile-jot-text').keyup();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
@ -59,7 +59,8 @@ select {
|
|||
padding: 3px;
|
||||
margin: 3px;
|
||||
color: #222;
|
||||
background: #eee; }
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
option {
|
||||
padding: 3px;
|
||||
|
@ -67,13 +68,13 @@ option {
|
|||
background: #eee;
|
||||
&[selected="selected"] {
|
||||
color: #111;
|
||||
background: #cca; } }
|
||||
|
||||
background: #cca; }
|
||||
}
|
||||
ul, ol {
|
||||
padding: 0; }
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* remember to define focus styles! */
|
||||
|
||||
:focus {
|
||||
outline: 0; }
|
||||
|
||||
|
|
|
@ -2,13 +2,21 @@
|
|||
|
||||
/*
|
||||
* Name: Dispy
|
||||
* Description: <p style="white-space:pre;"> Dispy: Light, Spartan, Sleek, and Functional<br /> Dispy Dark: Dark, Spartan, Sleek, and Functional</p>
|
||||
* Version: 1.2
|
||||
* Description: Dispy family (light, dark): Sleek and Functional Themes
|
||||
* Version: 1.2.1
|
||||
* Author: Simon <http://simon.kisikew.org/>
|
||||
* Maintainer: Simon <http://simon.kisikew.org/>
|
||||
* Screenshot: <a href="screenshot.jpg">Screenshot</a>
|
||||
*/
|
||||
|
||||
/* If you borrow any of these functions, make sure to
|
||||
* RENAME your functions, otherwise both themes get conflicts,
|
||||
* and the friendica instance will get HTTP 500 errors.
|
||||
* To paraphrase Mike: "Might wish to wrap
|
||||
* function_name with "if(! function_exists('function_name')) ... "
|
||||
* or rename to prefix1_function_name (prefix2_function_name), etc.
|
||||
*/
|
||||
|
||||
$a = get_app();
|
||||
$a->theme_info = array(
|
||||
'family' => 'dispy',
|
||||
|
@ -165,7 +173,7 @@ EOT;
|
|||
$a->page['htmlhead'] .= sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $cssFile);
|
||||
}
|
||||
|
||||
js_in_foot();
|
||||
_js_in_foot();
|
||||
}
|
||||
|
||||
function dispy_community_info() {
|
||||
|
@ -179,13 +187,15 @@ function dispy_community_info() {
|
|||
return $a->page['aside_bottom'] = replace_macros($tpl, $aside);
|
||||
}
|
||||
|
||||
function js_in_foot() {
|
||||
/** @purpose insert stuff in bottom of page
|
||||
*/
|
||||
$a = get_app();
|
||||
$baseurl = $a->get_baseurl($ssl_state);
|
||||
$bottom['$baseurl'] = $baseurl;
|
||||
$tpl = file_get_contents(dirname(__file__) . '/bottom.tpl');
|
||||
if(! function_exists('_js_in_foot')) {
|
||||
function _js_in_foot() {
|
||||
/** @purpose insert stuff in bottom of page
|
||||
*/
|
||||
$a = get_app();
|
||||
$baseurl = $a->get_baseurl($ssl_state);
|
||||
$bottom['$baseurl'] = $baseurl;
|
||||
$tpl = file_get_contents(dirname(__file__) . '/bottom.tpl');
|
||||
|
||||
return $a->page['bottom'] = replace_macros($tpl, $bottom);
|
||||
return $a->page['bottom'] = replace_macros($tpl, $bottom);
|
||||
}
|
||||
}
|
||||
|
|
61
view/theme/duepuntozero/moderated_comment.tpl
Executable file
61
view/theme/duepuntozero/moderated_comment.tpl
Executable file
|
@ -0,0 +1,61 @@
|
|||
<div class="comment-wwedit-wrapper" id="comment-edit-wrapper-$id" style="display: block;">
|
||||
<form class="comment-edit-form" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;">
|
||||
<input type="hidden" name="type" value="$type" />
|
||||
<input type="hidden" name="profile_uid" value="$profile_uid" />
|
||||
<input type="hidden" name="parent" value="$parent" />
|
||||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
</div>
|
||||
<div class="comment-edit-photo-end"></div>
|
||||
<div id="mod-cmnt-wrap-$id" class="mod-cmnt-wrap" style="display:none">
|
||||
<div id="mod-cmnt-name-lbl-$id" class="mod-cmnt-name-lbl">$lbl_modname</div>
|
||||
<input type="text" id="mod-cmnt-name-$id" class="mod-cmnt-name" name="mod-cmnt-name" value="$modname" />
|
||||
<div id="mod-cmnt-email-lbl-$id" class="mod-cmnt-email-lbl">$lbl_modemail</div>
|
||||
<input type="text" id="mod-cmnt-email-$id" class="mod-cmnt-email" name="mod-cmnt-email" value="$modemail" />
|
||||
<div id="mod-cmnt-url-lbl-$id" class="mod-cmnt-url-lbl">$lbl_modurl</div>
|
||||
<input type="text" id="mod-cmnt-url-$id" class="mod-cmnt-url" name="mod-cmnt-url" value="$modurl" />
|
||||
</div>
|
||||
<ul class="comment-edit-bb-$id">
|
||||
<li><a class="editicon boldbb shadow"
|
||||
style="cursor: pointer;" title="$edbold"
|
||||
onclick="insertFormatting('$comment','b', $id);"></a></li>
|
||||
<li><a class="editicon italicbb shadow"
|
||||
style="cursor: pointer;" title="$editalic"
|
||||
onclick="insertFormatting('$comment','i', $id);"></a></li>
|
||||
<li><a class="editicon underlinebb shadow"
|
||||
style="cursor: pointer;" title="$eduline"
|
||||
onclick="insertFormatting('$comment','u', $id);"></a></li>
|
||||
<li><a class="editicon quotebb shadow"
|
||||
style="cursor: pointer;" title="$edquote"
|
||||
onclick="insertFormatting('$comment','quote', $id);"></a></li>
|
||||
<li><a class="editicon codebb shadow"
|
||||
style="cursor: pointer;" title="$edcode"
|
||||
onclick="insertFormatting('$comment','code', $id);"></a></li>
|
||||
<li><a class="editicon imagebb shadow"
|
||||
style="cursor: pointer;" title="$edimg"
|
||||
onclick="insertFormatting('$comment','img', $id);"></a></li>
|
||||
<li><a class="editicon urlbb shadow"
|
||||
style="cursor: pointer;" title="$edurl"
|
||||
onclick="insertFormatting('$comment','url', $id);"></a></li>
|
||||
<li><a class="editicon videobb shadow"
|
||||
style="cursor: pointer;" title="$edvideo"
|
||||
onclick="insertFormatting('$comment','video', $id);"></a></li>
|
||||
</ul>
|
||||
<div class="comment-edit-bb-end"></div>
|
||||
<textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);cmtBbOpen($id);" onBlur="commentClose(this,$id);" >$comment</textarea>
|
||||
|
||||
<div class="comment-edit-text-end"></div>
|
||||
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
|
||||
<input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="$submit" />
|
||||
<span onclick="preview_comment($id);" id="comment-edit-preview-link-$id" class="fakelink">$preview</span>
|
||||
<div id="comment-edit-preview-$id" class="comment-edit-preview" style="display:none;"></div>
|
||||
</div>
|
||||
|
||||
<div class="comment-edit-end"></div>
|
||||
</form>
|
||||
|
||||
</div>
|
39
view/theme/duepuntozero/prv_message.tpl
Normal file
39
view/theme/duepuntozero/prv_message.tpl
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
<h3>$header</h3>
|
||||
|
||||
<div id="prvmail-wrapper" >
|
||||
<form id="prvmail-form" action="message" method="post" >
|
||||
|
||||
$parent
|
||||
|
||||
<div id="prvmail-to-label">$to</div>
|
||||
|
||||
{{ if $showinputs }}
|
||||
<input type="text" id="recip" name="messageto" value="$prefill" maxlength="255" size="64" tabindex="10" />
|
||||
<input type="hidden" id="recip-complete" name="messageto" value="$preid">
|
||||
{{ else }}
|
||||
$select
|
||||
{{ endif }}
|
||||
|
||||
<div id="prvmail-subject-label">$subject</div>
|
||||
<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="$subjtxt" $readonly tabindex="11" />
|
||||
|
||||
<div id="prvmail-message-label">$yourmessage</div>
|
||||
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">$text</textarea>
|
||||
|
||||
|
||||
<div id="prvmail-submit-wrapper" >
|
||||
<input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
|
||||
<div id="prvmail-upload-wrapper" >
|
||||
<div id="prvmail-upload" class="icon border camera" title="$upload" ></div>
|
||||
</div>
|
||||
<div id="prvmail-link-wrapper" >
|
||||
<div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
|
||||
</div>
|
||||
<div id="prvmail-rotator-wrapper" >
|
||||
<img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="prvmail-end"></div>
|
||||
</form>
|
||||
</div>
|
|
@ -3166,4 +3166,12 @@ ul.menu-popup {
|
|||
}
|
||||
#id_term {
|
||||
width:100px;
|
||||
}
|
||||
}
|
||||
|
||||
#recip {
|
||||
|
||||
}
|
||||
.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue