Dbrant has uploaded a new change for review.
https://gerrit.wikimedia.org/r/323354
Change subject: Add detailed "help" activity for editing descriptions.
......................................................................
Add detailed "help" activity for editing descriptions.
Bug: T151467
Change-Id: Ic139e8e64ba122f17cf0a3d9d27356a118f961f6
---
M app/src/main/AndroidManifest.xml
A app/src/main/assets/description_edit_help.html
M app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
A app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpActivity.java
A app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpFragment.java
A app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpView.java
M app/src/main/java/org/wikipedia/util/ResourceUtil.java
A app/src/main/res/drawable/ic_info_outline_black_24dp.xml
A app/src/main/res/drawable/ic_wikidata_logo.xml
A app/src/main/res/layout/fragment_description_edit_help.xml
A app/src/main/res/layout/view_description_edit_help.xml
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
M app/src/main/res/values/strings_no_translate.xml
14 files changed, 320 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/54/323354/1
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f54183c..9a26001 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -161,6 +161,10 @@
android:windowSoftInputMode="stateVisible|adjustResize"
android:exported="false"/>
+ <activity android:name=".descriptions.DescriptionEditHelpActivity"
+ android:theme="@style/AppTheme"
+ android:exported="false"/>
+
<provider
android:authorities="${applicationId}"
android:name=".database.AppContentProvider"
diff --git a/app/src/main/assets/description_edit_help.html
b/app/src/main/assets/description_edit_help.html
new file mode 100644
index 0000000..f4a2f70
--- /dev/null
+++ b/app/src/main/assets/description_edit_help.html
@@ -0,0 +1,14 @@
+<p><font color='#3366cc'><strong>About</strong></font></p>
+<p>Title descriptions summarize an article to help readers understand the
subject at a glance.<br/></p>
+<p><font color='#3366cc'><strong>Tips for creating
descriptions</strong></font></p>
+<p>Descriptions should ideally fit on one line, and are between two to twelve
words long.
+They are not capitalized unless the first word is a proper noun.</p>
+<p>For example:</p>
+<p><strong><em>painting by Leonardo da Vinci</em></strong><br/>
+title description for an article about the Mona Lisa</p>
+<p><strong><em>Earth's highest mountain</em></strong><br/>
+title description for an article about Mount Everest<br/></p>
+<p><font color='#3366cc'><strong>More information</strong></font></p>
+<p>Descriptions are stored and maintained on Wikidata, a project of the
Wikimedia Foundation which
+provides a free, collaborative, multilingual, secondary database supporting
Wikipedia and other
+projects.</p>
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
index 9b5f5f7..f8a71e5 100644
--- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
+++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
@@ -87,7 +87,7 @@
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_description_edit_help:
- // TODO: show tutorial!
+
startActivity(DescriptionEditHelpActivity.newIntent(getContext()));
return true;
default:
return super.onOptionsItemSelected(item);
diff --git
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpActivity.java
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpActivity.java
new file mode 100644
index 0000000..b07ca47
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpActivity.java
@@ -0,0 +1,31 @@
+package org.wikipedia.descriptions;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+
+import org.wikipedia.R;
+import org.wikipedia.activity.SingleFragmentActivityWithToolbar;
+
+public class DescriptionEditHelpActivity extends
SingleFragmentActivityWithToolbar<DescriptionEditHelpFragment> {
+
+ public static Intent newIntent(@NonNull Context context) {
+ return new Intent(context, DescriptionEditHelpActivity.class);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setWordmarkVisible(false);
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
getSupportActionBar().setTitle(R.string.description_edit_help_title);
+ }
+ }
+
+ @Override
+ public DescriptionEditHelpFragment createFragment() {
+ return DescriptionEditHelpFragment.newInstance();
+ }
+}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpFragment.java
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpFragment.java
new file mode 100644
index 0000000..1d40d78
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpFragment.java
@@ -0,0 +1,59 @@
+package org.wikipedia.descriptions;
+
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.wikipedia.R;
+import org.wikipedia.util.UriUtil;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+public class DescriptionEditHelpFragment extends Fragment {
+ @BindView(R.id.fragment_description_edit_help_view)
DescriptionEditHelpView helpView;
+ private Unbinder unbinder;
+
+ @NonNull
+ public static DescriptionEditHelpFragment newInstance() {
+ return new DescriptionEditHelpFragment();
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ View view = inflater.inflate(R.layout.fragment_description_edit_help,
container, false);
+ unbinder = ButterKnife.bind(this, view);
+
+ helpView.setCallback(new HelpViewCallback());
+ return view;
+ }
+
+ @Override public void onDestroyView() {
+ helpView.setCallback(null);
+ unbinder.unbind();
+ unbinder = null;
+ super.onDestroyView();
+ }
+
+ private class HelpViewCallback implements DescriptionEditHelpView.Callback
{
+ @Override
+ public void onAboutClick() {
+ UriUtil.handleExternalLink(getContext(),
+ Uri.parse(getString(R.string.wikidata_about_url)));
+ }
+
+ @Override
+ public void onGuideClick() {
+ UriUtil.handleExternalLink(getContext(),
+
Uri.parse(getString(R.string.wikidata_description_guide_url)));
+ }
+ }
+}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpView.java
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpView.java
new file mode 100644
index 0000000..7e0f41a
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditHelpView.java
@@ -0,0 +1,73 @@
+package org.wikipedia.descriptions;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build;
+import android.support.annotation.Nullable;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import org.wikipedia.R;
+import org.wikipedia.util.ResourceUtil;
+import org.wikipedia.util.StringUtil;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+
+public class DescriptionEditHelpView extends FrameLayout {
+ @BindView(R.id.view_description_edit_help_contents) TextView helpText;
+
+ @Nullable private Callback callback;
+
+ public interface Callback {
+ void onAboutClick();
+ void onGuideClick();
+ }
+
+ public DescriptionEditHelpView(Context context) {
+ super(context);
+ init();
+ }
+
+ public DescriptionEditHelpView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public DescriptionEditHelpView(Context context, AttributeSet attrs, int
defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ public DescriptionEditHelpView(Context context, AttributeSet attrs, int
defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init();
+ }
+
+ public void setCallback(@Nullable Callback callback) {
+ this.callback = callback;
+ }
+
+ @OnClick(R.id.view_description_edit_help_about) void onAboutClick() {
+ if (callback != null) {
+ callback.onAboutClick();
+ }
+ }
+
+ @OnClick(R.id.view_description_edit_help_guide) void onGuideClick() {
+ if (callback != null) {
+ callback.onGuideClick();
+ }
+ }
+
+ private void init() {
+ inflate(getContext(), R.layout.view_description_edit_help, this);
+ ButterKnife.bind(this);
+
+ String helpStr = ResourceUtil.readAssetFile(getContext(),
"description_edit_help.html");
+ helpText.setText(StringUtil.fromHtml(helpStr));
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/util/ResourceUtil.java
b/app/src/main/java/org/wikipedia/util/ResourceUtil.java
index d912c01..cc0ae9f 100644
--- a/app/src/main/java/org/wikipedia/util/ResourceUtil.java
+++ b/app/src/main/java/org/wikipedia/util/ResourceUtil.java
@@ -2,6 +2,7 @@
import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.AssetManager;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.net.Uri;
@@ -13,6 +14,11 @@
import android.util.TypedValue;
import org.wikipedia.R;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
public final class ResourceUtil {
private static final int NO_ID = 0;
@@ -68,6 +74,25 @@
.build();
}
+ @NonNull
+ public static String readAssetFile(@NonNull Context context, @NonNull
String fileName) {
+ AssetManager am = context.getResources().getAssets();
+ try {
+ InputStream in = am.open(fileName);
+ BufferedReader reader = new BufferedReader(new
InputStreamReader(in, "utf-8"));
+ StringBuilder fileStr = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ fileStr.append(line);
+ fileStr.append('\n');
+ }
+ reader.close();
+ return fileStr.toString();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
private static void checkId(@IdRes int id) {
if (!isIdValid(id)) {
throw new RuntimeException("id is invalid");
diff --git a/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
b/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
new file mode 100644
index 0000000..cf53e14
--- /dev/null
+++ b/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10
10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8
8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_wikidata_logo.xml
b/app/src/main/res/drawable/ic_wikidata_logo.xml
new file mode 100644
index 0000000..0a53349
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wikidata_logo.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="m0.066,19.432 l0.885,0 0,-14.746 -0.885,0
0,14.746zM1.836,19.432 L4.49,19.432 4.49,4.686 1.836,4.686
1.836,19.432zM5.375,4.686 L5.375,19.432 8.029,19.432 8.029,4.686 5.375,4.686z"
+ android:fillColor="#990000"/>
+ <path
+ android:pathData="m21.3,19.432 l0.885,0 0,-14.746 -0.885,0
0,14.746zM23.069,4.686 L23.069,19.432 23.954,19.432 23.954,4.686
23.069,4.686zM8.914,19.432 L9.798,19.432 9.798,4.686 8.914,4.686
8.914,19.432zM10.683,4.686 L10.683,19.432 11.568,19.432 11.568,4.686
10.683,4.686z"
+ android:fillColor="#339966"/>
+ <path
+ android:pathData="m12.453,19.432 l2.654,0 0,-14.746 -2.654,0
0,14.746zM15.992,19.432 L16.876,19.432 16.876,4.686 15.992,4.686
15.992,19.432zM17.761,4.686 L17.761,19.432 20.415,19.432 20.415,4.686
17.761,4.686z"
+ android:fillColor="#006699"/>
+</vector>
diff --git a/app/src/main/res/layout/fragment_description_edit_help.xml
b/app/src/main/res/layout/fragment_description_edit_help.xml
new file mode 100644
index 0000000..e6bc0f3
--- /dev/null
+++ b/app/src/main/res/layout/fragment_description_edit_help.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<org.wikipedia.descriptions.DescriptionEditHelpView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/fragment_description_edit_help_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="?attr/actionBarSize" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_description_edit_help.xml
b/app/src/main/res/layout/view_description_edit_help.xml
new file mode 100644
index 0000000..c5e0a79
--- /dev/null
+++ b/app/src/main/res/layout/view_description_edit_help.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="?attr/window_background_color">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin">
+
+ <TextView
+ android:id="@+id/view_description_edit_help_contents"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:lineSpacingMultiplier="1.2"
+ tools:text="Lorem ipsum"/>
+
+ <LinearLayout
+ android:id="@+id/view_description_edit_help_about"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:clickable="true"
+ android:background="?attr/selectableItemBackground">
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:srcCompat="@drawable/ic_wikidata_logo"
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@null"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="56dp"
+ android:padding="16dp"
+ android:textSize="16sp"
+ android:gravity="center_vertical"
+ android:text="@string/description_edit_help_about_wikidata"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/view_description_edit_help_guide"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:clickable="true"
+ android:background="?attr/selectableItemBackground">
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:srcCompat="@drawable/ic_info_outline_black_24dp"
+ android:tint="@color/dark_gray"
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@null"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="56dp"
+ android:padding="16dp"
+ android:textSize="16sp"
+ android:gravity="center_vertical"
+ android:text="@string/description_edit_help_wikidata_guide"/>
+ </LinearLayout>
+
+ </LinearLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/values-qq/strings.xml
b/app/src/main/res/values-qq/strings.xml
index 6e7789a..3c2519d 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -444,4 +444,7 @@
{{Identical|Save}}</string>
<string name="description_edit_char_count">Label that displays the character
count of the description being entered. The %1$d symbol is replaced with the
number of characters in the current description, and the %2$d symbol is
replaced with the maximum allowed characters.</string>
<string name="description_edit_add_description">Label that prompts the user
to add a description to an article that does not yet have one.</string>
+ <string name="description_edit_help_title">Title at the top of the screen
that shows additional help and information about editing descriptions.</string>
+ <string name="description_edit_help_about_wikidata">Menu label for
navigating to a page describing Wikidata.</string>
+ <string name="description_edit_help_wikidata_guide">Manu label for
navigating to the official Wikidata guide for composing descriptions.</string>
</resources>
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index 13265a1..049fb15 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -334,5 +334,8 @@
<string name="description_edit_save">Save</string>
<string name="description_edit_char_count">%1$d / %2$d</string>
<string name="description_edit_add_description">Add description</string>
+ <string name="description_edit_help_title">Help: title
descriptions</string>
+ <string name="description_edit_help_about_wikidata">About Wikidata</string>
+ <string name="description_edit_help_wikidata_guide">Wikidata guide for
writing descriptions</string>
<!-- /Description editing -->
</resources>
diff --git a/app/src/main/res/values/strings_no_translate.xml
b/app/src/main/res/values/strings_no_translate.xml
index 515368c..35edce9 100644
--- a/app/src/main/res/values/strings_no_translate.xml
+++ b/app/src/main/res/values/strings_no_translate.xml
@@ -8,6 +8,8 @@
<!-- URLs -->
<string
name="zero_webpage_url">https://m.wikimediafoundation.org/wiki/Wikipedia_Zero_App_FAQ</string>
<string
name="donate_url">https://donate.wikimedia.org/?utm_medium=WikipediaApp&utm_campaign=Android&utm_source=%1$s&uselang=%2$s</string>
+ <string
name="wikidata_about_url">https://www.wikidata.org/wiki/Wikidata:Introduction</string>
+ <string
name="wikidata_description_guide_url">https://www.wikidata.org/wiki/Help:Description#Guidelines_for_descriptions_in_English</string>
<!-- Accounts -->
<string name="account_name">@string/wikimedia</string>
--
To view, visit https://gerrit.wikimedia.org/r/323354
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic139e8e64ba122f17cf0a3d9d27356a118f961f6
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