Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
cc8f9c7
Person model & Role enum introduced
oguzkocer Oct 6, 2015
3ac4905
New people management strings added
oguzkocer Oct 6, 2015
b0c1b8c
ImageUrl property and setter/getters for Person model
oguzkocer Oct 7, 2015
b1d6026
People management activity introduced with dummy data
oguzkocer Oct 7, 2015
5f99060
People link added to the blog details page
oguzkocer Oct 7, 2015
062b40a
Merge remote-tracking branch 'origin/develop' into feature/3286-team-…
oguzkocer Oct 13, 2015
b3dcec8
Username & role UI elements added for people
oguzkocer Oct 13, 2015
f99ca92
PersonActivity introduced
oguzkocer Oct 13, 2015
adbb46d
People management and person activity naming changes
oguzkocer Oct 13, 2015
6603a28
Selecting a person from the list opens PersonActivity
oguzkocer Oct 13, 2015
d9d3e8d
Person details added to the UI
oguzkocer Oct 13, 2015
95f3490
Person role and remove button added
oguzkocer Oct 27, 2015
4e7b70f
Removes the 'People' button from my sites until the feature is ready
oguzkocer Oct 27, 2015
47d5707
Merge remote-tracking branch 'origin/develop' into feature/3286-team-…
oguzkocer Nov 2, 2015
aae15e0
People page is accessible again
oguzkocer Nov 2, 2015
596ff14
Remove default case for toString method
oguzkocer Nov 13, 2015
c45dc6e
Comment added to fromString method for Role to explain how it'll be used
oguzkocer Nov 13, 2015
13c7ef0
Potential null point exceptions fixed in PeopleAdapter
oguzkocer Nov 13, 2015
50cc4d7
Right margin added to display name in people list row
oguzkocer Nov 13, 2015
364a34c
Role enum refactored to use constructors
oguzkocer Nov 16, 2015
ec2040b
Use listview divider instead of a separate view for people management
oguzkocer Nov 16, 2015
8aa2db9
Merge remote-tracking branch 'origin/develop' into feature/3286-team-…
oguzkocer Nov 16, 2015
d16be54
Person local id removed, instead personId is used as unique now
oguzkocer Nov 23, 2015
cbd57d3
PersonTable introduced
oguzkocer Nov 23, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions WordPress/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,15 @@
android:theme="@style/CalypsoTheme"
android:windowSoftInputMode="stateHidden"/>

<!--People Management-->
<activity
android:name="org.wordpress.android.ui.people.PeopleManagementActivity"
android:theme="@style/CalypsoTheme"/>

<activity
android:name="org.wordpress.android.ui.people.PersonActivity"
android:theme="@style/CalypsoTheme"/>

<!-- Services -->
<service
android:name=".ui.posts.services.PostUploadService"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.wordpress.android.datasets.SuggestionTable;
import org.wordpress.android.models.Account;
import org.wordpress.android.models.Blog;
import org.wordpress.android.models.Person;
import org.wordpress.android.models.Post;
import org.wordpress.android.models.PostLocation;
import org.wordpress.android.models.PostsListPost;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.wordpress.android.datasets;

import org.wordpress.android.models.Person;
import org.wordpress.android.models.Role;

public class PersonTable {
/**
* retrieve a single person
* @param personId - unique id in person table
* @return Person if found, null otherwise
*/
public static Person getPerson(int personId) {
// This is a stub method for now so it returns a mock object, once implemented it will query the db
return new Person(4, "oguzkocer", "Oguz", "Kocer", "Oguz", "http://lorempixum.com/76/76", Role.EDITOR);
}
}
76 changes: 76 additions & 0 deletions WordPress/src/main/java/org/wordpress/android/models/Person.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package org.wordpress.android.models;

public class Person {
public long personID;

private String username;
private String firstName;
private String lastName;
private String displayName;
private String imageUrl;
private Role role;

public Person(long personID,
String username,
String firstName,
String lastName,
String displayName,
String imageUrl,
Role role) {
this.personID = personID;
this.username = username;
this.firstName = firstName;
this.lastName = lastName;
this.displayName = displayName;
this.imageUrl = imageUrl;
this.role = role;
}

public String getUsername() {
return "@" + username;
}

public void setUsername(String username) {
this.username = username;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getDisplayName() {
return displayName;
}

public void setDisplayName(String displayName) {
this.displayName = displayName;
}

public Role getRole() {
return role;
}

public void setRole(Role role) {
this.role = role;
}

public String getImageUrl() {
return imageUrl;
}

public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
}
46 changes: 46 additions & 0 deletions WordPress/src/main/java/org/wordpress/android/models/Role.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package org.wordpress.android.models;

import android.content.Context;
import android.support.v4.content.ContextCompat;

import org.wordpress.android.R;

public enum Role {
SUPER_ADMIN(R.string.role_super_admin, R.color.orange_fire),
ADMIN(R.string.role_admin, R.color.grey_dark),
EDITOR(R.string.role_editor, R.color.blue_dark),
AUTHOR(R.string.role_author, R.color.blue_wordpress),
CONTRIBUTOR(R.string.role_contributor, R.color.blue_wordpress),
UNSUPPORTED(R.string.role_unsupported, R.color.blue_wordpress);

private final int label;
private final int backgroundColor;

Role(int label, int backgroundColor) {
this.label = label;
this.backgroundColor = backgroundColor;
}

public static String toString(Context context, Role role) {
return context.getString(role.label);
}

// This method will be used to determine the role of the user from network request
public static Role fromString(String value) {
if (value == null)
return Role.UNSUPPORTED;
if (value.equals("administrator"))
return Role.ADMIN;
if (value.equals("editor"))
return Role.EDITOR;
if (value.equals("author"))
return Role.AUTHOR;
if (value.equals("contributor"))
return Role.CONTRIBUTOR;
return Role.UNSUPPORTED;
}

public static int backgroundColor(Context context, Role role) {
return ContextCompat.getColor(context, role.backgroundColor);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.wordpress.android.WordPress;
import org.wordpress.android.analytics.AnalyticsTracker;
import org.wordpress.android.models.Blog;
import org.wordpress.android.models.Person;
import org.wordpress.android.models.Post;
import org.wordpress.android.networking.SSLCertsViewActivity;
import org.wordpress.android.networking.SelfSignedSSLCertsManager;
Expand All @@ -22,6 +23,8 @@
import org.wordpress.android.ui.main.SitePickerActivity;
import org.wordpress.android.ui.media.MediaBrowserActivity;
import org.wordpress.android.ui.media.WordPressMediaUtils;
import org.wordpress.android.ui.people.PeopleManagementActivity;
import org.wordpress.android.ui.people.PersonActivity;
import org.wordpress.android.ui.posts.EditPostActivity;
import org.wordpress.android.ui.posts.PostPreviewActivity;
import org.wordpress.android.ui.posts.PostsListActivity;
Expand Down Expand Up @@ -102,6 +105,12 @@ public static void viewCurrentBlogThemes(Context context) {
}
}

public static void viewCurrentBlogPeople(Context context) {
Intent intent = new Intent(context, PeopleManagementActivity.class);
slideInFromRight(context, intent);
// TODO: add -> AnalyticsTracker.track(AnalyticsTracker.Stat.OPENED_PEOPLE_MANAGEMENT);
}

public static void viewBlogSettingsForResult(Activity activity, Blog blog) {
if (blog == null) return;

Expand Down Expand Up @@ -250,6 +259,12 @@ public static void addSelfHostedSiteForResult(Activity activity) {
activity.startActivityForResult(intent, RequestCodes.ADD_ACCOUNT);
}

public static void viewPersonDetails(Context context, Person person) {
Intent intent = new Intent(context, PersonActivity.class);
intent.putExtra(PersonActivity.EXTRA_PERSON_ID, person.personID);
slideInFromRight(context, intent);
}

public static void slideInFromRight(Context context, Intent intent) {
if (context instanceof Activity) {
intent.putExtra(ARG_DID_SLIDE_IN_FROM_RIGHT, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,13 @@ public void onClick(View v) {
}
});

rootView.findViewById(R.id.row_people).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityLauncher.viewCurrentBlogPeople(getActivity());
}
});

rootView.findViewById(R.id.row_settings).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package org.wordpress.android.ui.people;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import org.wordpress.android.R;
import org.wordpress.android.models.Person;
import org.wordpress.android.models.Role;
import org.wordpress.android.util.GravatarUtils;
import org.wordpress.android.widgets.WPNetworkImageView;

import java.util.ArrayList;
import java.util.List;

public class PeopleAdapter extends BaseAdapter {
private final Context mContext;
private final LayoutInflater mInflater;
private List<Person> mPersonList;
private int mAvatarSz;

public PeopleAdapter(Context context) {
mContext = context;
mAvatarSz = context.getResources().getDimensionPixelSize(R.dimen.avatar_sz_medium);
mInflater = LayoutInflater.from(context);
mPersonList = new ArrayList<>();
mPersonList.add(new Person(1, "beaulebens", "Beau", "Lebens", "Beau", "http://lorempixum.com/76/76", Role.ADMIN));
mPersonList.add(new Person(2, "ebinnion", "Eric", "Binnion", "Eric", "http://lorempixum.com/76/76", Role.AUTHOR));
mPersonList.add(new Person(3, "javialvarez", "Javi", "Alvarez", "Javi", "http://lorempixum.com/76/76", Role.CONTRIBUTOR));
mPersonList.add(new Person(4, "oguzkocer", "Oguz", "Kocer", "Oguz", "http://lorempixum.com/76/76", Role.EDITOR));
}

@Override
public int getCount() {
if (mPersonList == null) {
return 0;
}
return mPersonList.size();
}

@Override
public Person getItem(int position) {
if (mPersonList == null) {
return null;
}
return mPersonList.get(position);
}

@Override
public long getItemId(int position) {
Person person = getItem(position);
if (person == null) {
return 0;
}
return person.personID;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
final PeopleViewHolder holder;

if (convertView == null || convertView.getTag() == null) {
convertView = mInflater.inflate(R.layout.people_list_row, parent, false);
holder = new PeopleViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (PeopleViewHolder) convertView.getTag();
}

Person person = getItem(position);

if (person != null) {
String avatarUrl = GravatarUtils.fixGravatarUrl(person.getImageUrl(), mAvatarSz);
holder.imgAvatar.setImageUrl(avatarUrl, WPNetworkImageView.ImageType.AVATAR);
holder.txtDisplayName.setText(person.getDisplayName());
holder.txtUsername.setText(person.getUsername());
holder.txtRole.setText(Role.toString(mContext, person.getRole()));
holder.txtRole.setBackgroundColor(Role.backgroundColor(mContext, person.getRole()));
}

return convertView;
}

private class PeopleViewHolder {
private final WPNetworkImageView imgAvatar;
private final TextView txtDisplayName;
private final TextView txtUsername;
private final TextView txtRole;

PeopleViewHolder(View row) {
imgAvatar = (WPNetworkImageView) row.findViewById(R.id.people_list_row_avatar);
txtDisplayName = (TextView) row.findViewById(R.id.people_list_row_display_name);
txtUsername = (TextView) row.findViewById(R.id.people_list_row_username);
txtRole = (TextView) row.findViewById(R.id.people_list_row_role);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package org.wordpress.android.ui.people;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import org.wordpress.android.R;
import org.wordpress.android.models.Person;
import org.wordpress.android.ui.ActivityLauncher;

public class PeopleManagementActivity extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
setContentView(R.layout.people_management_activity);

setTitle(R.string.people);

ListView listView = (ListView)findViewById(android.R.id.list);
listView.setAdapter(new PeopleAdapter(this));

final Activity context = this;
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Person person = (Person) parent.getItemAtPosition(position);
ActivityLauncher.viewPersonDetails(context, person);
}
});
}

@Override
public void finish() {
super.finish();
ActivityLauncher.slideOutToRight(this);
}

@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Loading