Merge branch 'master' into highlighter

This commit is contained in:
vita10gy 2013-04-09 22:38:55 -05:00
commit 055e584925
13 changed files with 172 additions and 60 deletions

View File

@ -231,7 +231,7 @@ window.setupPlayerStat = function() {
+ '<h2 title="'+t+'">'+level+'&nbsp;'
+ '<div id="name">'
+ '<span class="'+cls+'">'+PLAYER.nickname+'</span>'
+ '<a href="https://www.ingress.com/_ah/logout?continue=https://www.google.com/accounts/Logout%3Fcontinue%3Dhttps://appengine.google.com/_ah/logout%253Fcontinue%253Dhttps://www.ingress.com/intel%26service%3Dah" id="signout">sign out</a>'
+ '<a href="/_ah/logout?continue=https://www.google.com/accounts/Logout%3Fcontinue%3Dhttps://appengine.google.com/_ah/logout%253Fcontinue%253Dhttps://www.ingress.com/intel%26service%3Dah" id="signout">sign out</a>'
+ '</div>'
+ '<div id="stats">'
+ '<sup>XM: '+xmRatio+'%</sup>'
@ -386,6 +386,7 @@ try { console.log('Loading included JS now'); } catch(e) {}
try { console.log('done loading included JS'); } catch(e) {}
//note: no protocol - so uses http or https as used on the current page
var JQUERY = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
var JQUERYUI = 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js';

View File

@ -292,7 +292,7 @@ window.chat.writeDataToHash = function(newData, storageHash, isPublicChannel) {
case 'PORTAL':
var latlng = [markup[1].latE6/1E6, markup[1].lngE6/1E6];
var perma = 'https://ingress.com/intel?latE6='+markup[1].latE6+'&lngE6='+markup[1].lngE6+'&z=17&pguid='+markup[1].guid;
var perma = '/intel?latE6='+markup[1].latE6+'&lngE6='+markup[1].lngE6+'&z=17&pguid='+markup[1].guid;
var js = 'window.zoomToAndShowPortal(\''+markup[1].guid+'\', ['+latlng[0]+', '+latlng[1]+']);return false';
msg += '<a onclick="'+js+'"'
@ -606,6 +606,7 @@ window.chat.setupTime = function() {
window.chat.setupPosting = function() {
if (!isSmartphone()) {
$('#chatinput input').keydown(function(event) {
try {
var kc = (event.keyCode ? event.keyCode : event.which);
@ -621,6 +622,7 @@ window.chat.setupPosting = function() {
debug.printStackTrace();
}
});
}
$('#chatinput').submit(function(event) {
event.preventDefault();

View File

@ -50,7 +50,7 @@ window.renderPortalDetails = function(guid) {
var lat = d.locationE6.latE6;
var lng = d.locationE6.lngE6;
var perma = 'https://ingress.com/intel?latE6='+lat+'&lngE6='+lng+'&z=17&pguid='+guid;
var perma = '/intel?latE6='+lat+'&lngE6='+lng+'&z=17&pguid='+guid;
var imgTitle = 'title="'+getPortalDescriptionFromDetails(d)+'\n\nClick to show full image."';
var poslinks = 'window.showPortalPosLinks('+lat/1E6+','+lng/1E6+',\'' + d.portalV2.descriptiveText.TITLE + '\')';
var postcard = 'Send in a postcard. Will put it online after receiving. Address:\\n\\nStefan Breunig\\nINF 305 R045\\n69120 Heidelberg\\nGermany';

View File

@ -59,10 +59,7 @@ window.postAjax = function(action, data, success, error) {
var remove = function(data, textStatus, jqXHR) { window.requests.remove(jqXHR); };
var errCnt = function(jqXHR) { window.failedRequestCount++; window.requests.remove(jqXHR); };
var result = $.ajax({
// use full URL to avoid issues depending on how people set their
// slash. See:
// https://github.com/breunigs/ingress-intel-total-conversion/issues/56
url: window.location.protocol + '//www.ingress.com/rpc/dashboard.'+action,
url: '/rpc/dashboard.'+action,
type: 'POST',
data: data,
dataType: 'json',
@ -261,7 +258,7 @@ window.setPermaLink = function(elm) {
var lat = Math.round(c.lat*1E6);
var lng = Math.round(c.lng*1E6);
var qry = 'latE6='+lat+'&lngE6='+lng+'&z=' + (map.getZoom()-1);
$(elm).attr('href', 'https://www.ingress.com/intel?' + qry);
$(elm).attr('href', '/intel?' + qry);
}
window.uniqueArray = function(arr) {

View File

@ -61,7 +61,7 @@ document.getElementsByTagName('head')[0].innerHTML = ''
+ '<style>@@INCLUDESTRING:style.css@@</style>'
+ '<style>@@INCLUDESTRING:external/leaflet.css@@</style>'
//note: smartphone.css injection moved into code/smartphone.js
+ '<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Coda"/>';
+ '<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Coda"/>';
document.getElementsByTagName('body')[0].innerHTML = ''
+ '<div id="map">Loading, please wait</div>'
@ -168,7 +168,7 @@ window.RANGE_INDICATOR_COLOR = 'red'
window.PORTAL_RADIUS_ENLARGE_MOBILE = 5;
window.DEFAULT_PORTAL_IMG = 'https://commondatastorage.googleapis.com/ingress/img/default-portal-image.png';
window.DEFAULT_PORTAL_IMG = '//commondatastorage.googleapis.com/ingress/img/default-portal-image.png';
window.NOMINATIM = 'http://nominatim.openstreetmap.org/search?format=json&limit=1&q=';
// INGRESS CONSTANTS /////////////////////////////////////////////////

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cradle.iitc_mobile"
android:versionCode="1"
android:versionName="0.2.5" >
android:versionCode="7"
android:versionName="0.2.6" >
<uses-sdk
android:minSdkVersion="14"

View File

@ -8,9 +8,30 @@
<string name="cache_clear">Clear Cache</string>
<string name="locate">Get Location</string>
<string name="local">local</string>
<string name="close">close</string>
<string name="build_version">Build Version</string>
<string name="iitc_version">IITC Version</string>
<string name="about">About</string>
<string name="pref_about_title">About IITC Mobile</string>
<!-- Use CDATA to prevent android from parsin html tags....we are doing this with Html.fromHtml() -->
<string name="pref_about_msg">
<![CDATA[<big><b>Ingress Intel Total Conversion Mobile</b></big><br><br>
<b>by <a href="https://github.com/leCradle">cradle</a></b><br><br>
<b>Icon by <a href="https://twitter.com/machtwerk">machtwerk</a></b><br><br>
IITC Mobile is an optimized mobile browser for the
Ingress Intel Total Conversion (IITC) userscript by <a href="https://github.com/breunigs"><b>breunigs</b></a>.
After Niantic asked the main developer to shut down his github project, development
is continued on a fork of <a href="https://github.com/jonatkins"><b>jonatkins</b></a>.<br><br>
<b>Website:</b><br>
<a href="http://iitc.jonatkins.com/">http://iitc.jonatkins.com/</a><br><br>
<b>Fork github:</b><br>
<a href="https://github.com/jonatkins/ingress-intel-total-conversion">https://github.com/jonatkins/ingress-intel-total-conversion</a><br><br>
<b>Old github:</b><br>
<a href="https://github.com/breunigs/ingress-intel-total-conversion">https://github.com/breunigs/ingress-intel-total-conversion</a>]]>
</string>
<string name="pref_ui_cat">UI</string>
<string name="pref_force_desktop">Force desktop mode</string>
<string name="pref_force_desktop_sum">Nice for tablets, looks awful on smartphones</string>
<string name="pref_developer_options">Developer options</string>

View File

@ -1,10 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<com.cradle.iitc_mobile.IITC_AboutDialogPreference
android:key="pref_about"
android:title="@string/pref_about_title"
android:dialogIcon="@android:drawable/ic_dialog_info"
android:negativeButtonText=""
android:positiveButtonText=""
android:dialogTitle="@string/pref_about_title"/>
<PreferenceCategory
android:key="pref_about_cat"
android:title="@string/pref_ui_cat">
<CheckBoxPreference
android:key="pref_force_desktop"
android:title="@string/pref_force_desktop"
android:summary="@string/pref_force_desktop_sum"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory
android:key="pref_developer_options"
@ -28,4 +41,5 @@
android:enabled="false"
android:selectable="false" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -0,0 +1,46 @@
package com.cradle.iitc_mobile;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.preference.DialogPreference;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.AttributeSet;
import android.widget.TextView;
public class IITC_AboutDialogPreference extends DialogPreference{
private Context context;
public IITC_AboutDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
/*
* start a little about-dialog
* srsly...I found no better way for clickable links in a TextView then
* using Html.fromHtml...Linkify is just broken and does not understand
* html href tags...so let's tag the @string/about_msg with CDATA and
* use Html.fromHtml(...) for clickable hrefs with tags.
*/
@Override
protected void onPrepareDialogBuilder(Builder builder) {
final TextView message = new TextView(context);
String about_msg = context.getText(R.string.pref_about_msg).toString();
message.setText(Html.fromHtml(about_msg));
message.setMovementMethod(LinkMovementMethod.getInstance());
builder.setView(message)
.setTitle(R.string.about)
.setIcon(R.drawable.ic_stat_about)
.setNeutralButton(R.string.close, new OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
super.onPrepareDialogBuilder(builder);
}
}

View File

@ -17,6 +17,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@ -28,6 +29,7 @@ public class IITC_Mobile extends Activity {
private boolean back_button_pressed = false;
private boolean desktop = false;
private OnSharedPreferenceChangeListener listener;
private String intel_url = "https://www.ingress.com/intel";
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -44,19 +46,11 @@ public class IITC_Mobile extends Activity {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("pref_force_desktop"))
desktop = sharedPreferences.getBoolean("pref_force_desktop", false);
// reload intel map
iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel"));
injectJS();
IITC_Mobile.this.loadUrl(intel_url);
}
};
sharedPref.registerOnSharedPreferenceChangeListener(listener);
// we do not want to reload our page every time we switch orientations...
// so restore state if activity was already created
if(savedInstanceState != null) {
iitc_view.restoreState(savedInstanceState);
}
else {
// load new iitc web view with ingress intel page
Intent intent = getIntent();
String action = intent.getAction();
@ -65,25 +59,26 @@ public class IITC_Mobile extends Activity {
String url = uri.toString();
if (intent.getScheme().equals("http://"))
url = url.replace("http://", "https://");
Log.d("Intent received", "url: " + url);
Log.d("iitcm", "intent received url: " + url);
if (url.contains("ingress.com")) {
Log.d("Intent received", "loading url...");
iitc_view.loadUrl(addUrlParam(url));
Log.d("iitcm", "loading url...");
this.loadUrl(url);
}
}
else {
Log.d("No Intent call", "loading https://www.ingress.com/intel");
iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel"));
}
Log.d("iitcm", "no intent...loading " + intel_url);
this.loadUrl(intel_url);
}
}
@Override
protected void onResume() {
super.onResume();
// enough idle...let's do some work
Log.d("iitcm", "resuming...setting reset idleTimer");
iitc_view.loadUrl("javascript: window.idleTime = 0");
iitc_view.loadUrl("javascript: window.renderUpdateStatus()");
super.onResume();
}
@Override
@ -104,10 +99,13 @@ public class IITC_Mobile extends Activity {
super.onStop();
}
// save instance state to avoid reloading on orientation change
@Override
protected void onSaveInstanceState(Bundle outState) {
iitc_view.saveState(outState);
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d("iitcm", "configuration changed...restoring...reset idleTimer");
iitc_view.loadUrl("javascript: window.idleTime = 0");
iitc_view.loadUrl("javascript: window.renderUpdateStatus()");
}
// we want a self defined behavior for the back button
@ -143,8 +141,7 @@ public class IITC_Mobile extends Activity {
// Handle item selection
switch (item.getItemId()) {
case R.id.reload_button:
iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel"));
injectJS();
this.loadUrl(intel_url);
return true;
// clear cache
case R.id.cache_clear:
@ -156,6 +153,7 @@ public class IITC_Mobile extends Activity {
case R.id.locate:
iitc_view.loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});");
return true;
// start settings activity
case R.id.settings:
Intent intent = new Intent(this, IITC_Settings.class);
intent.putExtra("iitc_version", iitc_view.getWebViewClient().getIITCVersion());
@ -185,4 +183,12 @@ public class IITC_Mobile extends Activity {
else
return (url + "?vp=m");
}
public void loadUrl(String url) {
url = addUrlParam(url);
Log.d("iitcm", "injecting js...");
injectJS();
Log.d("iitcm", "loading url: " + url);
iitc_view.loadUrl(url);
}
}

View File

@ -200,7 +200,7 @@ window.plugin.apList.getPortalLink = function(portal) {
var latlng = [portal.locationE6.latE6/1E6, portal.locationE6.lngE6/1E6].join();
var jsSingleClick = 'window.plugin.apList.selectPortal(\''+portal.guid+'\');return false';
var jsDoubleClick = 'window.zoomToAndShowPortal(\''+portal.guid+'\', ['+latlng+']);return false';
var perma = 'https://ingress.com/intel?latE6='+portal.locationE6.latE6
var perma = '/intel?latE6='+portal.locationE6.latE6
+'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+portal.guid;
//Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal
var a = $('<a>',{

View File

@ -0,0 +1,25 @@
// ==UserScript==
// @id force-https@jonatkins
// @name IITC plugin: force https access for ingress.com/intel
// @version 0.1.0.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Force https access for ingress.com/intel. If the intel site is accessed via http, it redirects to the https version
// @include https://www.ingress.com/intel*
// @include http://www.ingress.com/intel*
// @match https://www.ingress.com/intel*
// @match http://www.ingress.com/intel*
// ==/UserScript==
//NOTE: plugin authors - due to the unique requirements of this plugin, it doesn't use the standard IITC
//plugin architechure. do NOT use it as a template for other plugins
if(window.location.protocol !== 'https:') {
var redir = window.location.href.replace(/^http:/, 'https:');
window.location = redir;
throw('Need to load HTTPS version.');
}

View File

@ -353,7 +353,7 @@ window.plugin.portalslist.exportKML = function(){
// description contain picture of the portal, address and link to the Intel map
var description = '<![CDATA['
+ '<div><table><tr><td><img style="width:100px" src="' + portal.img + '"></td><td>' + portal.address
+ '<br><a href="https://ingress.com/intel?latE6=' + portal.lat*1E6 + '&lngE6=' + portal.lng*1E6 + '&z=17">Link to Intel Map</a></td></tr></table>'
+ '<br><a href="https://www.ingress.com/intel?latE6=' + portal.lat*1E6 + '&lngE6=' + portal.lng*1E6 + '&z=17">Link to Intel Map</a></td></tr></table>'
+ ']]>';
kml += '<Placemark><name>L' + Math.floor(portal.level) + ' - ' + portal.name + '</name>'
@ -387,7 +387,7 @@ window.plugin.portalslist.getPortalLink = function(portal,guid) {
var latlng = [portal.locationE6.latE6/1E6, portal.locationE6.lngE6/1E6].join();
var jsSingleClick = 'window.renderPortalDetails(\''+guid+'\');return false';
var jsDoubleClick = 'window.zoomToAndShowPortal(\''+guid+'\', ['+latlng+']);return false';
var perma = 'https://ingress.com/intel?latE6='+portal.locationE6.latE6+'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+guid;
var perma = '/intel?latE6='+portal.locationE6.latE6+'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+guid;
//Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal
var a = $('<a>',{