mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-27 15:59:29 +00:00
Can update the content of a post.
This commit is contained in:
parent
758ed7c09c
commit
13a7a85e1a
@ -167,6 +167,15 @@ public class Post {
|
|||||||
getUser_access_level() == PostUserAccess.FULL_ACCESS;
|
getUser_access_level() == PostUserAccess.FULL_ACCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the current user can update the content of the current post or not
|
||||||
|
*
|
||||||
|
* @return TRUE if the post can be updated by the current user / FALSE else
|
||||||
|
*/
|
||||||
|
public boolean canUpdate(){
|
||||||
|
return getUser_access_level() == PostUserAccess.FULL_ACCESS;
|
||||||
|
}
|
||||||
|
|
||||||
//Set and get file path url
|
//Set and get file path url
|
||||||
void setFile_path_url(String file_path_url) {
|
void setFile_path_url(String file_path_url) {
|
||||||
this.file_path_url = file_path_url;
|
this.file_path_url = file_path_url;
|
||||||
|
@ -210,6 +210,30 @@ public class PostsHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intend to update the content of a post
|
||||||
|
*
|
||||||
|
* @param postId The ID of the post to update
|
||||||
|
* @param content The new content for the post
|
||||||
|
* @return TRUE in case of success / FALSE else
|
||||||
|
*/
|
||||||
|
public boolean update_content(int postId, String content) {
|
||||||
|
|
||||||
|
//Perform a request on the API
|
||||||
|
APIRequestParameters params = new APIRequestParameters(mContext, "posts/update_content");
|
||||||
|
params.addString("new_content", content);
|
||||||
|
params.addInt("postID", postId);
|
||||||
|
|
||||||
|
//Try to perform the request
|
||||||
|
try {
|
||||||
|
APIResponse response = new APIRequest().exec(params);
|
||||||
|
return response.getResponse_code() == 200;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a JSON post information into POST object
|
* Parse a JSON post information into POST object
|
||||||
*
|
*
|
||||||
|
@ -297,6 +297,13 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
|||||||
*/
|
*/
|
||||||
void onPostLikeUpdate(Post post, boolean is_liking);
|
void onPostLikeUpdate(Post post, boolean is_liking);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the update request of the content of a post
|
||||||
|
*
|
||||||
|
* @param post Target post
|
||||||
|
*/
|
||||||
|
void onPostContentUpdate(Post post);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the deletion process of a post
|
* Handles the deletion process of a post
|
||||||
*
|
*
|
||||||
|
@ -14,6 +14,7 @@ import android.view.MenuInflater;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
@ -300,6 +301,10 @@ public class PostsListFragment extends Fragment
|
|||||||
menu.findItem(R.id.action_delete).setEnabled(false);
|
menu.findItem(R.id.action_delete).setEnabled(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Check if the current user can update the post or not
|
||||||
|
if(!post.canUpdate())
|
||||||
|
menu.findItem(R.id.action_edit_post).setEnabled(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -325,6 +330,73 @@ public class PostsListFragment extends Fragment
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPostContentUpdate(final Post post) {
|
||||||
|
|
||||||
|
//Inflate a view
|
||||||
|
final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_edit_post,
|
||||||
|
null);
|
||||||
|
((EditText)view.findViewById(R.id.post_content_input)).setText(post.getContent());
|
||||||
|
|
||||||
|
//Create a dialog
|
||||||
|
new AlertDialog.Builder(getActivity())
|
||||||
|
.setTitle(R.string.popup_editpost_title)
|
||||||
|
.setNegativeButton(R.string.popup_editpost_cancel, null)
|
||||||
|
.setView(view)
|
||||||
|
|
||||||
|
.setPositiveButton(R.string.popup_editpost_confirm,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
processPostUpdate(post, view);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process the update of a post content
|
||||||
|
*
|
||||||
|
* @param post The target post
|
||||||
|
* @param editForm The form that contains the updated post
|
||||||
|
*/
|
||||||
|
private void processPostUpdate(final Post post, View editForm){
|
||||||
|
|
||||||
|
//Get the content of the post
|
||||||
|
final String newContent = ((EditText)editForm.findViewById(R.id.post_content_input)).getText()+"";
|
||||||
|
|
||||||
|
//Update the content of the post
|
||||||
|
new AsyncTask<Void, Void, Post>(){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Post doInBackground(Void... params) {
|
||||||
|
if(!mPostsHelper.update_content(post.getId(), newContent))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return mPostsHelper.getSingle(post.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(@Nullable Post newPost) {
|
||||||
|
|
||||||
|
if(getActivity() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(newPost == null){
|
||||||
|
Toast.makeText(getActivity(), R.string.err_update_post_content,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update the content of the post
|
||||||
|
post.setContent(newPost.getContent());
|
||||||
|
mPostsAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deletePost(final int pos) {
|
public void deletePost(final int pos) {
|
||||||
|
|
||||||
@ -429,8 +501,7 @@ public class PostsListFragment extends Fragment
|
|||||||
public void onUpdateCommentContent(final Comment comment) {
|
public void onUpdateCommentContent(final Comment comment) {
|
||||||
|
|
||||||
//Inflate the content of the dialog
|
//Inflate the content of the dialog
|
||||||
View content = getActivity().getLayoutInflater().inflate(R.layout.dialog_edit_comment,
|
View content = getActivity().getLayoutInflater().inflate(R.layout.dialog_edit_comment, null);
|
||||||
mListView);
|
|
||||||
final EditCommentContentView commentInput = content.findViewById(R.id.input_comment_content);
|
final EditCommentContentView commentInput = content.findViewById(R.id.input_comment_content);
|
||||||
commentInput.setText(comment.getContent());
|
commentInput.setText(comment.getContent());
|
||||||
|
|
||||||
@ -564,6 +635,11 @@ public class PostsListFragment extends Fragment
|
|||||||
if(!(mPostsList.size() > mNumCurrPostInContextMenu))
|
if(!(mPostsList.size() > mNumCurrPostInContextMenu))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
//Edit the content of the post if required
|
||||||
|
if(item.getItemId() == R.id.action_edit_post){
|
||||||
|
onPostContentUpdate(mPostsList.get(mNumCurrPostInContextMenu));
|
||||||
|
}
|
||||||
|
|
||||||
//Check if the request is to delete the comment
|
//Check if the request is to delete the comment
|
||||||
if(item.getItemId() == R.id.action_delete) {
|
if(item.getItemId() == R.id.action_delete) {
|
||||||
deletePost(mNumCurrPostInContextMenu);
|
deletePost(mNumCurrPostInContextMenu);
|
||||||
|
13
app/src/main/res/layout/dialog_edit_post.xml
Normal file
13
app/src/main/res/layout/dialog_edit_post.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<!-- Post content -->
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/post_content_input"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/edit_post_content_hint"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -1,6 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<!-- Update the content of the post -->
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_edit_post"
|
||||||
|
android:title="@string/action_edit_post" />
|
||||||
|
|
||||||
<!-- Delete the post -->
|
<!-- Delete the post -->
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_delete"
|
android:id="@+id/action_delete"
|
||||||
|
@ -137,4 +137,10 @@
|
|||||||
<string name="popup_editcomment_edit_placeholder">New content for the comment</string>
|
<string name="popup_editcomment_edit_placeholder">New content for the comment</string>
|
||||||
<string name="err_update_comment_content">An error occurred while trying to update comment content !</string>
|
<string name="err_update_comment_content">An error occurred while trying to update comment content !</string>
|
||||||
<string name="comment_image_description">Comment image</string>
|
<string name="comment_image_description">Comment image</string>
|
||||||
|
<string name="action_edit_post">Edit</string>
|
||||||
|
<string name="popup_editpost_title">Edit the post</string>
|
||||||
|
<string name="popup_editpost_cancel">Cancel</string>
|
||||||
|
<string name="popup_editpost_confirm">Edit</string>
|
||||||
|
<string name="edit_post_content_hint">New content for the post</string>
|
||||||
|
<string name="err_update_post_content">An error occurred while trying to update the content of the post!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user