Dbrant has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/389997 )
Change subject: Inject a hint message into Main Pages of offline article packs.
......................................................................
Inject a hint message into Main Pages of offline article packs.
Bug: T179205
Change-Id: I95357651dd3249483754e85c7df523741ec75cb3
---
M app/src/main/assets/bundle.js
M app/src/main/java/org/wikipedia/offline/Compilation.java
M app/src/main/java/org/wikipedia/offline/OfflineManager.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/page/PageProperties.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
M www/js/sections.js
8 files changed, 78 insertions(+), 16 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/97/389997/1
diff --git a/app/src/main/assets/bundle.js b/app/src/main/assets/bundle.js
index e051ede..5dcc7d2 100644
--- a/app/src/main/assets/bundle.js
+++ b/app/src/main/assets/bundle.js
@@ -79,7 +79,7 @@
module.exports = new ActionsHandler();
-},{"./bridge":2,"./utilities":18}],2:[function(require,module,exports){
+},{"./bridge":2,"./utilities":19}],2:[function(require,module,exports){
function Bridge() {
}
@@ -134,7 +134,7 @@
bridge.registerListener( 'toggleDimImages', function( payload ) {
pagelib.DimImagesTransform.dim( window, payload.dimImages );
} );
-},{"./bridge":2,"wikimedia-page-library":19}],4:[function(require,module,exports){
+},{"./bridge":2,"wikimedia-page-library":20}],4:[function(require,module,exports){
var actions = require('./actions');
var bridge = require('./bridge');
@@ -224,7 +224,7 @@
pagelib.ThemeTransform.classifyElements( content );
}
} );
-},{"./bridge":2,"wikimedia-page-library":19}],9:[function(require,module,exports){
+},{"./bridge":2,"wikimedia-page-library":20}],9:[function(require,module,exports){
var bridge = require("./bridge");
bridge.registerListener( "setDirectionality", function( payload ) {
@@ -525,10 +525,19 @@
clearContents();
setWindowAttributes(payload);
window.isOffline = true;
+ window.mainPageHint = payload.mainPageHint;
window.offlineContentProvider = payload.offlineContentProvider;
var contentElem = document.getElementById( "content" );
setTitleElement(contentElem);
+
+ if (window.isMainPage) {
+ // TODO: remove this when the actual Main Pages in ZIM files contain
more descriptive content.
+ var helperDiv = document.createElement( "div" );
+ helperDiv.innerHTML = window.mainPageHint;
+ helperDiv.style = "font-size: 85%; margin: 12px 0 20px 0; padding:
12px; line-height: 120%; background-color: rgba(0, 0, 0, 0.04); border: 1px
solid rgba(0, 0, 0, 0.08); border-radius: 2px;";
+ contentElem.appendChild( helperDiv );
+ }
var issuesContainer = setIssuesElement(contentElem);
@@ -718,7 +727,7 @@
bridge.sendMessage( "currentSectionResponse", { sectionID:
getCurrentSection() } );
} );
-},{"./bridge":2,"./onclick":7,"./transformer":11,"wikimedia-page-library":19}],11:[function(require,module,exports){
+},{"./bridge":2,"./onclick":7,"./transformer":11,"wikimedia-page-library":20}],11:[function(require,module,exports){
function Transformer() {
}
@@ -772,7 +781,24 @@
handleTableCollapseOrExpandClick: toggleCollapseClickCallback
};
-},{"../transformer":11,"wikimedia-page-library":19}],13:[function(require,module,exports){
+},{"../transformer":11,"wikimedia-page-library":20}],13:[function(require,module,exports){
+var transformer = require("../transformer");
+
+transformer.register( "hideImages", function( content ) {
+ var minImageSize = 64;
+ var images = content.querySelectorAll( 'img' );
+ for (var i = 0; i < images.length; i++) {
+ var img = images[i];
+ if (img.width < minImageSize && img.height < minImageSize) {
+ continue;
+ }
+ // Just replace the src of the image with a placeholder image from our
assets.
+ img.src = "file:///android_asset/checkerboard.png";
+ img.srcset = "";
+ }
+} );
+
+},{"../transformer":11}],14:[function(require,module,exports){
var transformer = require("../transformer");
transformer.register( "hideRefs", function( content ) {
@@ -794,7 +820,7 @@
td.appendChild(refLists[i]);
}
} );
-},{"../transformer":11}],14:[function(require,module,exports){
+},{"../transformer":11}],15:[function(require,module,exports){
var transformer = require("../../transformer");
transformer.register( "anchorPopUpMediaTransforms", function( content ) {
@@ -827,7 +853,7 @@
}
} );
-},{"../../transformer":11}],15:[function(require,module,exports){
+},{"../../transformer":11}],16:[function(require,module,exports){
var transformer = require("../../transformer");
var bridge = require("../../bridge");
@@ -876,7 +902,7 @@
containerSpan.onclick = ipaClickHandler;
}
} );
-},{"../../bridge":2,"../../transformer":11}],16:[function(require,module,exports){
+},{"../../bridge":2,"../../transformer":11}],17:[function(require,module,exports){
var transformer = require("../../transformer");
// Move the first non-empty paragraph (and related elements) to the top of the
section.
@@ -960,7 +986,7 @@
}
}
-},{"../../transformer":11}],17:[function(require,module,exports){
+},{"../../transformer":11}],18:[function(require,module,exports){
var maybeWidenImage =
require('wikimedia-page-library').WidenImage.maybeWidenImage;
var transformer = require("../transformer");
@@ -982,7 +1008,7 @@
}
} );
-},{"../transformer":11,"wikimedia-page-library":19}],18:[function(require,module,exports){
+},{"../transformer":11,"wikimedia-page-library":20}],19:[function(require,module,exports){
function ancestorContainsClass( element, className ) {
var contains = false;
var curNode = element;
@@ -1031,7 +1057,7 @@
firstDivAncestor: firstDivAncestor
};
-},{}],19:[function(require,module,exports){
+},{}],20:[function(require,module,exports){
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ?
module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
@@ -3300,4 +3326,4 @@
})));
-},{}]},{},[2,6,18,11,12,13,17,14,15,16,1,4,5,3,8,9,10]);
+},{}]},{},[2,6,19,11,12,13,14,18,15,16,17,1,4,5,3,8,9,10]);
diff --git a/app/src/main/java/org/wikipedia/offline/Compilation.java
b/app/src/main/java/org/wikipedia/offline/Compilation.java
index 39cb8bc..300aa5e 100644
--- a/app/src/main/java/org/wikipedia/offline/Compilation.java
+++ b/app/src/main/java/org/wikipedia/offline/Compilation.java
@@ -43,6 +43,7 @@
@Nullable private String path;
@Nullable private transient ZimFile file;
@Nullable private transient ZimReader reader;
+ @Nullable private transient String mainPageTitle;
public enum MediaContent {
ALL, NOVID, NOPIC
@@ -251,7 +252,10 @@
@NonNull
String getMainPageTitle() throws IOException {
- return reader.getMainPageTitle();
+ if (mainPageTitle == null) {
+ mainPageTitle = reader.getMainPageTitle();
+ }
+ return mainPageTitle;
}
public static class Image {
diff --git a/app/src/main/java/org/wikipedia/offline/OfflineManager.java
b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
index a1ef9a6..78bffe3 100644
--- a/app/src/main/java/org/wikipedia/offline/OfflineManager.java
+++ b/app/src/main/java/org/wikipedia/offline/OfflineManager.java
@@ -4,6 +4,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.text.TextUtils;
import org.wikipedia.settings.Prefs;
import org.wikipedia.util.log.L;
@@ -186,6 +187,22 @@
return compilations.get(compIndex).getMainPageTitle();
}
+ public boolean isMainPage(@Nullable String title) {
+ if (TextUtils.isEmpty(title)) {
+ return false;
+ }
+ try {
+ for (Compilation c : compilations) {
+ if (title.equals(c.getMainPageTitle())) {
+ return true;
+ }
+ }
+ } catch (IOException e) {
+ // ignore
+ }
+ return false;
+ }
+
@NonNull public String getMainPageTitle(@NonNull Compilation compilation)
throws IOException {
// The compilation parameter can be a "remote" compilation (i.e.
nonempty URI but empty
// path, or a local compilation unmarshalled from an Intent (i.e.
empty URI but nonempty
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index 350f2d7..d5dd39b 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -439,7 +439,8 @@
PageTitle newTitle = TextUtils.isEmpty(normalizedTitle) ?
model.getTitle()
: new PageTitle(normalizedTitle,
model.getTitle().getWikiSite());
- Page page = new Page(newTitle, new ArrayList<>(), new
PageProperties(newTitle));
+ Page page = new Page(newTitle, new ArrayList<>(),
+ new PageProperties(newTitle,
OfflineManager.instance().isMainPage(newTitle.getDisplayText())));
model.setPage(page);
editHandler.setPage(model.getPage());
@@ -476,6 +477,9 @@
.put("zimhtml", result.html())
.put("fromRestBase", false)
.put("offlineContentProvider",
OfflineContentProvider.getBaseUrl());
+ if (page.isMainPage()) {
+ zimPayload.put("mainPageHint",
fragment.getString(R.string.offline_library_main_page_hint_html));
+ }
if (sectionTargetFromTitle != null) {
//if we have a section to scroll to (from our PageTitle):
diff --git a/app/src/main/java/org/wikipedia/page/PageProperties.java
b/app/src/main/java/org/wikipedia/page/PageProperties.java
index 0caf0f1..52a3f9c 100644
--- a/app/src/main/java/org/wikipedia/page/PageProperties.java
+++ b/app/src/main/java/org/wikipedia/page/PageProperties.java
@@ -91,7 +91,7 @@
* namespace fields, and explicitly disables editing. All other fields
initialized to defaults.
* @param title Title to which these properties apply.
*/
- public PageProperties(@NonNull PageTitle title) {
+ public PageProperties(@NonNull PageTitle title, boolean isMainPage) {
pageId = 0;
namespace = title.namespace();
revisionId = 0;
@@ -104,7 +104,7 @@
leadImageName = "";
lastModified = new Date();
canEdit = false;
- isMainPage = false;
+ this.isMainPage = isMainPage;
isDisambiguationPage = false;
wikiBaseItem = null;
}
diff --git a/app/src/main/res/values-qq/strings.xml
b/app/src/main/res/values-qq/strings.xml
index 755b5fc..ec32591 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -486,6 +486,7 @@
<string
name="offline_library_onboarding_uninterrupted_reading_subtitle">{{Doc-mobileapp-internet}}\nShort
explanatory text about the Offline Library feature.</string>
<string name="offline_library_onboarding_store_knowledge_title">Title for a
tutorial screen about the Offline Library feature.</string>
<string name="offline_library_onboarding_store_knowledge_subtitle">Short
explanatory text about the Offline Library feature.</string>
+ <string name="offline_library_main_page_hint_html">Message to be shown at
the top of Main Pages of offline article packs, providing additional guidance
to the user about usage of the Main Page.</string>
<string name="onboarding_skip">Button label to skip the current onboarding
or tutorial screen.\n{{Identical|Skip}}</string>
<string name="onboarding_continue">Button label to continue to the next
onboarding or tutorial screen.\n{{Identical|Continue}}</string>
<string name="onboarding_get_started">Button label to finish the current
onboarding or tutorial workflow.\n{{Identical|Get started}}</string>
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index 8fd8c41..95fc4f7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -539,6 +539,7 @@
<string
name="offline_library_onboarding_uninterrupted_reading_subtitle">Keep on
reading and searching for articles within your Offline Library when you don\'t
have access to internet.</string>
<string name="offline_library_onboarding_store_knowledge_title">Store more
knowledge</string>
<string
name="offline_library_onboarding_store_knowledge_subtitle">Download as much
Wikipedia as your device can handle. Offline Library can also access article
packs on external storage.</string>
+ <string name="offline_library_main_page_hint_html"><![CDATA[This Main Page
provides an overview of the contents of this article pack.<br /><br />You may
also explore the contents of any article pack in your Offline Library by
searching for available articles while you are offline.]]></string>
<!-- /Offline -->
<!-- Onboarding -->
diff --git a/www/js/sections.js b/www/js/sections.js
index 1513298..2066af6 100644
--- a/www/js/sections.js
+++ b/www/js/sections.js
@@ -282,11 +282,20 @@
clearContents();
setWindowAttributes(payload);
window.isOffline = true;
+ window.mainPageHint = payload.mainPageHint;
window.offlineContentProvider = payload.offlineContentProvider;
var contentElem = document.getElementById( "content" );
setTitleElement(contentElem);
+ if (window.isMainPage) {
+ // TODO: remove this when the actual Main Pages in ZIM files contain
more descriptive content.
+ var helperDiv = document.createElement( "div" );
+ helperDiv.innerHTML = window.mainPageHint;
+ helperDiv.style = "font-size: 85%; margin: 12px 0 20px 0; padding:
12px; line-height: 120%; background-color: rgba(0, 0, 0, 0.04); border: 1px
solid rgba(0, 0, 0, 0.08); border-radius: 2px;";
+ contentElem.appendChild( helperDiv );
+ }
+
var issuesContainer = setIssuesElement(contentElem);
var parser = new DOMParser();
--
To view, visit https://gerrit.wikimedia.org/r/389997
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I95357651dd3249483754e85c7df523741ec75cb3
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits