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&amp;utm_campaign=Android&amp;utm_source=%1$s&amp;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

Reply via email to