Merge branch 'refactor-donate-credit-pages' of gitnex/GitNex into master
This commit is contained in:
commit
51da8b9c4d
@ -1,12 +1,18 @@
|
|||||||
package org.mian.gitnex.activities;
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.method.LinkMovementMethod;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.adapters.CreditsAdapter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Author M M Arif
|
* Author M M Arif
|
||||||
@ -22,14 +28,28 @@ public class CreditsActivity extends AppCompatActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_credits);
|
setContentView(R.layout.activity_credits);
|
||||||
|
|
||||||
TextView creditKasun = findViewById(R.id.creditKasun);
|
|
||||||
ImageView closeActivity = findViewById(R.id.close);
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
creditKasun.setMovementMethod(LinkMovementMethod.getInstance());
|
|
||||||
|
|
||||||
initCloseListener();
|
initCloseListener();
|
||||||
closeActivity.setOnClickListener(onClickListener);
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
Resources res = getResources();
|
||||||
|
CharSequence[] creditsInfo = res.getTextArray(R.array.creditsInfo);
|
||||||
|
|
||||||
|
List<CharSequence> creditsList = new ArrayList<>(Arrays.asList(creditsInfo));
|
||||||
|
|
||||||
|
RecyclerView mRecyclerView = findViewById(R.id.recyclerView);
|
||||||
|
|
||||||
|
mRecyclerView.setHasFixedSize(true);
|
||||||
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
|
||||||
|
|
||||||
|
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
|
||||||
|
DividerItemDecoration.VERTICAL);
|
||||||
|
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||||
|
|
||||||
|
CreditsAdapter adapter = new CreditsAdapter(creditsList);
|
||||||
|
mRecyclerView.setAdapter(adapter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initCloseListener() {
|
private void initCloseListener() {
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
package org.mian.gitnex.activities;
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.method.LinkMovementMethod;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.adapters.SponsorsAdapter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Author M M Arif
|
* Author M M Arif
|
||||||
@ -22,12 +28,27 @@ public class SponsorsActivity extends AppCompatActivity {
|
|||||||
setContentView(R.layout.activity_sponsors);
|
setContentView(R.layout.activity_sponsors);
|
||||||
|
|
||||||
ImageView closeActivity = findViewById(R.id.close);
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
TextView liberaPaySponsorsThomas = findViewById(R.id.liberaPaySponsorsThomas);
|
|
||||||
|
|
||||||
liberaPaySponsorsThomas.setMovementMethod(LinkMovementMethod.getInstance());
|
|
||||||
|
|
||||||
initCloseListener();
|
initCloseListener();
|
||||||
closeActivity.setOnClickListener(onClickListener);
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
Resources res = getResources();
|
||||||
|
CharSequence[] sponsorsInfo = res.getTextArray(R.array.sponsorsInfo);
|
||||||
|
|
||||||
|
List<CharSequence> sponsorsList = new ArrayList<>(Arrays.asList(sponsorsInfo));
|
||||||
|
|
||||||
|
RecyclerView mRecyclerView = findViewById(R.id.recyclerView);
|
||||||
|
|
||||||
|
mRecyclerView.setHasFixedSize(true);
|
||||||
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
|
||||||
|
|
||||||
|
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
|
||||||
|
DividerItemDecoration.VERTICAL);
|
||||||
|
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||||
|
|
||||||
|
SponsorsAdapter adapter = new SponsorsAdapter(sponsorsList);
|
||||||
|
mRecyclerView.setAdapter(adapter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initCloseListener() {
|
private void initCloseListener() {
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
package org.mian.gitnex.adapters;
|
||||||
|
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CreditsAdapter extends RecyclerView.Adapter<CreditsAdapter.CreditsViewHolder> {
|
||||||
|
|
||||||
|
private List<CharSequence> creditsList;
|
||||||
|
|
||||||
|
static class CreditsViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private TextView creditText;
|
||||||
|
|
||||||
|
private CreditsViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
|
||||||
|
creditText = itemView.findViewById(R.id.creditText);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public CreditsAdapter(List<CharSequence> creditsListMain) {
|
||||||
|
this.creditsList = creditsListMain;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public CreditsAdapter.CreditsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.credits, parent, false);
|
||||||
|
return new CreditsAdapter.CreditsViewHolder(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull CreditsAdapter.CreditsViewHolder holder, int position) {
|
||||||
|
|
||||||
|
SpannableStringBuilder strBuilder = new SpannableStringBuilder(creditsList.get(position));
|
||||||
|
holder.creditText.setText((strBuilder));
|
||||||
|
holder.creditText.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return creditsList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package org.mian.gitnex.adapters;
|
||||||
|
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SponsorsAdapter extends RecyclerView.Adapter<SponsorsAdapter.SponsorsViewHolder> {
|
||||||
|
|
||||||
|
private List<CharSequence> sponsorsList;
|
||||||
|
|
||||||
|
static class SponsorsViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private TextView sponsorText;
|
||||||
|
|
||||||
|
private SponsorsViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
|
||||||
|
sponsorText = itemView.findViewById(R.id.sponsorText);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SponsorsAdapter(List<CharSequence> sponsorsListMain) {
|
||||||
|
this.sponsorsList = sponsorsListMain;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public SponsorsAdapter.SponsorsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.sponsors, parent, false);
|
||||||
|
return new SponsorsAdapter.SponsorsViewHolder(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull SponsorsAdapter.SponsorsViewHolder holder, int position) {
|
||||||
|
|
||||||
|
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sponsorsList.get(position));
|
||||||
|
holder.sponsorText.setText((strBuilder));
|
||||||
|
holder.sponsorText.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return sponsorsList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
<LinearLayout android:layout_width="match_parent"
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
@ -40,45 +42,20 @@
|
|||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<ScrollView
|
<LinearLayout
|
||||||
|
android:id="@+id/creditsFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/backgroundColor">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recyclerView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_margin="20dp"
|
android:background="@color/colorPrimary"
|
||||||
android:paddingBottom="30dp"
|
android:padding="4dp"
|
||||||
android:orientation="vertical">
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
<TextView
|
</LinearLayout>
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/creditsLogoDesign"
|
|
||||||
android:textColor="@color/colorWhite"
|
|
||||||
android:textSize="18sp"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:background="@color/divider" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/creditKasun"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/creditAuthorKasun"
|
|
||||||
android:textColor="@color/colorWhite"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textColorLink="@color/lightBlue"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@ -1,4 +1,6 @@
|
|||||||
<LinearLayout android:layout_width="match_parent"
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
@ -40,56 +42,20 @@
|
|||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<ScrollView android:layout_width="match_parent"
|
<LinearLayout
|
||||||
android:layout_height="match_parent"
|
android:id="@+id/sponsorsFrame"
|
||||||
android:background="@color/backgroundColor">
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recyclerView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_margin="20dp"
|
android:background="@color/colorPrimary"
|
||||||
android:paddingBottom="30dp"
|
android:padding="4dp"
|
||||||
android:orientation="vertical">
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
<TextView
|
</LinearLayout>
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/liberaPayText"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="18sp"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:background="@color/divider" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/sponsorFabian"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/liberaPaySponsorsFabian"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:textColorLink="@color/lightBlue"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/liberaPaySponsorsThomas"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/liberaPaySponsorsThomas"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:textColorLink="@color/lightBlue"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
21
app/src/main/res/layout/credits.xml
Normal file
21
app/src/main/res/layout/credits.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingBottom="10dp"
|
||||||
|
android:paddingTop="10dp"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:background="@color/backgroundColor" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/creditText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textColorLink="@color/lightBlue"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
21
app/src/main/res/layout/sponsors.xml
Normal file
21
app/src/main/res/layout/sponsors.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingBottom="10dp"
|
||||||
|
android:paddingTop="10dp"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:background="@color/backgroundColor" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/sponsorText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textColorLink="@color/lightBlue"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
8
app/src/main/res/values/credits.xml
Normal file
8
app/src/main/res/values/credits.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<string-array name="creditsInfo">
|
||||||
|
<item>Logo by Kasun <a href="https://mastodon.social/@kasun">@kasun</a></item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
</resources>
|
10
app/src/main/res/values/sponsors.xml
Normal file
10
app/src/main/res/values/sponsors.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<string-array name="sponsorsInfo">
|
||||||
|
<item>Fabian Stamm</item>
|
||||||
|
<item>Thomas Schneider <a href="https://framapiaf.org/@fedilab">@Fedilab</a></item>
|
||||||
|
<item>Ljoonal <a href="https://mastodon.ljoonal.xyz/@ljoonal">@ljoonal</a></item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
</resources>
|
@ -285,10 +285,6 @@
|
|||||||
|
|
||||||
<string name="creditsLogoDesign">Design</string>
|
<string name="creditsLogoDesign">Design</string>
|
||||||
|
|
||||||
<!-- credits - this part does not need translation -->
|
|
||||||
<string name="creditAuthorKasun" translatable="false">Logo by <a href="https://mastodon.social/@kasun">Kasun @Mastodon</a></string>
|
|
||||||
<!-- credits - this part does not need translation -->
|
|
||||||
|
|
||||||
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
|
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
|
||||||
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
|
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
|
||||||
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
|
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
|
||||||
@ -408,12 +404,6 @@
|
|||||||
<string name="userExistsError">User already exists</string>
|
<string name="userExistsError">User already exists</string>
|
||||||
<!-- create user -->
|
<!-- create user -->
|
||||||
|
|
||||||
<!-- sponsors -->
|
|
||||||
<string name="liberaPayText" translatable="false">Liberapay</string>
|
|
||||||
<string name="liberaPaySponsorsFabian" translatable="false">Fabian Stamm</string>
|
|
||||||
<string name="liberaPaySponsorsThomas" translatable="false">Thomas Schneider <a href="https://framapiaf.org/@fedilab">@Fedilab</a></string>
|
|
||||||
<!-- sponsors -->
|
|
||||||
|
|
||||||
<!-- edit issue -->
|
<!-- edit issue -->
|
||||||
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
|
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
|
||||||
<string name="editIssueSuccessMessage">Issue updated.</string>
|
<string name="editIssueSuccessMessage">Issue updated.</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user