diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..9b0a64ba --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [jendib] diff --git a/.gitignore b/.gitignore index 06a670ab..5560f987 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,6 @@ *.iml node_modules import_test -docs-importer-linux -docs-importer-macos -docs-importer-win.exe \ No newline at end of file +teedy-importer-linux +teedy-importer-macos +teedy-importer-win.exe \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 30fe4095..6be6a246 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,17 +4,27 @@ language: java before_install: - sudo add-apt-repository -y ppa:mc3man/trusty-media - sudo apt-get -qq update - - sudo apt-get -y -q install ffmpeg mediainfo tesseract-ocr tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-kor tesseract-ocr-rus tesseract-ocr-ukr tesseract-ocr-spa tesseract-ocr-ara tesseract-ocr-hin tesseract-ocr-deu tesseract-ocr-pol tesseract-ocr-jpn tesseract-ocr-por tesseract-ocr-tha tesseract-ocr-jpn tesseract-ocr-chi-sim tesseract-ocr-chi-tra + - sudo apt-get -y -q install ffmpeg mediainfo tesseract-ocr tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-kor tesseract-ocr-rus tesseract-ocr-ukr tesseract-ocr-spa tesseract-ocr-ara tesseract-ocr-hin tesseract-ocr-deu tesseract-ocr-pol tesseract-ocr-jpn tesseract-ocr-por tesseract-ocr-tha tesseract-ocr-jpn tesseract-ocr-chi-sim tesseract-ocr-chi-tra tesseract-ocr-nld tesseract-ocr-tur tesseract-ocr-heb tesseract-ocr-hun tesseract-ocr-fin tesseract-ocr-swe tesseract-ocr-lav tesseract-ocr-dan - sudo apt-get -y -q install haveged && sudo service haveged start after_success: - - mvn -Pprod -DskipTests clean install - - docker login -u $DOCKER_USER -p $DOCKER_PASS - - export REPO=sismics/docs - - export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi` - - docker build -f Dockerfile -t $REPO:$COMMIT . - - docker tag $REPO:$COMMIT $REPO:$TAG - - docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER - - docker push $REPO + - | + if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + mvn -Pprod -DskipTests clean install + docker login -u $DOCKER_USER -p $DOCKER_PASS + export REPO=sismics/docs + export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi` + docker build -f Dockerfile -t $REPO:$COMMIT . + docker tag $REPO:$COMMIT $REPO:$TAG + docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER + docker push $REPO + cd docs-importer + export REPO=sismics/docs-importer + export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi` + docker build -f Dockerfile -t $REPO:$COMMIT . + docker tag $REPO:$COMMIT $REPO:$TAG + docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER + docker push $REPO + fi env: global: - secure: LRGpjWORb0qy6VuypZjTAfA8uRHlFUMTwb77cenS9PPRBxuSnctC531asS9Xg3DqC5nsRxBBprgfCKotn5S8nBSD1ceHh84NASyzLSBft3xSMbg7f/2i7MQ+pGVwLncusBU6E/drnMFwZBleo+9M8Tf96axY5zuUp90MUTpSgt0= diff --git a/Dockerfile b/Dockerfile index 74764c72..736f881a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM sismics/ubuntu-jetty:9.4.12 MAINTAINER b.gamard@sismics.com -RUN apt-get update && apt-get -y -q install ffmpeg mediainfo tesseract-ocr tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-kor tesseract-ocr-rus tesseract-ocr-ukr tesseract-ocr-spa tesseract-ocr-ara tesseract-ocr-hin tesseract-ocr-deu tesseract-ocr-pol tesseract-ocr-jpn tesseract-ocr-por tesseract-ocr-tha tesseract-ocr-jpn tesseract-ocr-chi-sim tesseract-ocr-chi-tra && \ +RUN apt-get update && apt-get -y -q install ffmpeg mediainfo tesseract-ocr tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-kor tesseract-ocr-rus tesseract-ocr-ukr tesseract-ocr-spa tesseract-ocr-ara tesseract-ocr-hin tesseract-ocr-deu tesseract-ocr-pol tesseract-ocr-jpn tesseract-ocr-por tesseract-ocr-tha tesseract-ocr-jpn tesseract-ocr-chi-sim tesseract-ocr-chi-tra tesseract-ocr-nld tesseract-ocr-tur tesseract-ocr-heb tesseract-ocr-hun tesseract-ocr-fin tesseract-ocr-swe tesseract-ocr-lav tesseract-ocr-dan && \ apt-get clean && rm -rf /var/lib/apt/lists/* # Remove the embedded javax.mail jar from Jetty @@ -9,3 +9,5 @@ RUN rm -f /opt/jetty/lib/mail/javax.mail.glassfish-*.jar ADD docs.xml /opt/jetty/webapps/docs.xml ADD docs-web/target/docs-web-*.war /opt/jetty/webapps/docs.war + +ENV JAVA_OPTIONS -Xmx1g \ No newline at end of file diff --git a/README.md b/README.md index 21876f18..b02c831b 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,24 @@

- Sismics Docs + Teedy

-[![Twitter: @sismicsdocs](https://img.shields.io/badge/contact-@sismicsdocs-blue.svg?style=flat)](https://twitter.com/sismicsdocs) [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) [![Build Status](https://secure.travis-ci.org/sismics/docs.png)](http://travis-ci.org/sismics/docs) -Docs is an open source, lightweight document management system for individuals and businesses. - -**Discuss it on [Product Hunt](https://www.producthunt.com/posts/sismics-docs) 🦄** +Teedy is an open source, lightweight document management system for individuals and businesses.

- ✨ We just launched a Cloud version of Sismics Docs! Head to sismicsdocs.com for more informations ✨ + ✨ Sponsor this project if you use and appreciate it!


-![New!](https://www.sismicsdocs.com/img/laptop-demo.png?20180301) +![New!](https://teedy.io/img/laptop-demo.png?20180301) Demo ---- -A demo is available at [demo.sismicsdocs.com](https://demo.sismicsdocs.com) +A demo is available at [demo.teedy.io](https://demo.teedy.io) - Guest login is enabled with read access on all documents - "admin" login with "admin" password - "demo" login with "password" password @@ -31,16 +28,19 @@ Features - Responsive user interface - Optical character recognition +- LDAP authentication ![New!](https://www.sismics.com/public/img/new.png) - Support image, PDF, ODT, DOCX, PPTX files -- Video file support ![New!](https://www.sismics.com/public/img/new.png) +- Video file support - Flexible search engine with suggestions and highlighting - Full text search in all supported files - All [Dublin Core](http://dublincore.org/) metadata +- Custom user-defined metadata ![New!](https://www.sismics.com/public/img/new.png) - Workflow system ![New!](https://www.sismics.com/public/img/new.png) - 256-bit AES encryption of stored files +- File versioning ![New!](https://www.sismics.com/public/img/new.png) - Tag system with nesting -- Import document from email (EML format) ![New!](https://www.sismics.com/public/img/new.png) -- Automatic inbox scanning and importing ![New!](https://www.sismics.com/public/img/new.png) +- Import document from email (EML format) +- Automatic inbox scanning and importing - User/group permission system - 2-factor authentication - Hierarchical groups @@ -49,22 +49,23 @@ Features - Storage quota per user - Document sharing by URL - RESTful Web API -- Webhooks to trigger external service ![New!](https://www.sismics.com/public/img/new.png) +- Webhooks to trigger external service - Fully featured Android client -- [Bulk files importer](https://github.com/sismics/docs/tree/master/docs-importer) (single or scan mode) ![New!](https://www.sismics.com/public/img/new.png) +- [Bulk files importer](https://github.com/sismics/docs/tree/master/docs-importer) (single or scan mode) - Tested to one million documents Install with Docker ------------------- -From a Docker host, run this command to download and install Sismics Docs. The server will run on . -**The default admin password is "admin". Don't forget to change it before going to production.** +A preconfigured Docker image is available, including OCR and media conversion tools, listening on port 8080. The database is an embedded H2 database but PostgreSQL is also supported for more performance. - docker run --rm --name sismics_docs_latest -d -e DOCS_BASE_URL='http://[your-docker-host-ip]:8100' -p 8100:8080 -v sismics_docs_latest:/data sismics/docs:latest - **Note:** You will need to change [your-docker-host-ip] with the IP address or FQDN of your docker host e.g. - - FQDN: http://docs.sismics.com - IP: http://192.168.100.10 +**The default admin password is "admin". Don't forget to change it before going to production.** +- Master branch, can be unstable. Not recommended for production use: `sismics/docs:latest` +- Latest stable version: `sismics/docs:v1.8` + +The data directory is `/data`. Don't forget to mount a volume on it. + +To build external URL, the server is expecting a `DOCS_BASE_URL` environment variable (for example https://teedy.mycompany.com) Manual installation ------------------- @@ -80,12 +81,12 @@ Manual installation The latest release is downloadable here: in WAR format. **The default admin password is "admin". Don't forget to change it before going to production.** -How to build Docs from the sources +How to build Teedy from the sources ---------------------------------- -Prerequisites: JDK 8 with JCE, Maven 3, Tesseract 3 or 4 +Prerequisites: JDK 8 with JCE, Maven 3, NPM, Grunt, Tesseract 3 or 4 -Docs is organized in several Maven modules: +Teedy is organized in several Maven modules: - docs-core - docs-web @@ -121,19 +122,8 @@ All contributions are more than welcomed. Contributions may close an issue, fix The `master` branch is the default and base branch for the project. It is used for development and all Pull Requests should go there. - -Community ---------- - -Get updates on Sismics Docs' development and chat with the project maintainers: - -- Follow [@sismicsdocs on Twitter](https://twitter.com/sismicsdocs) -- Read and subscribe to [The Official Sismics Docs Blog](https://blog.sismicsdocs.com/) -- Check the [Official Website](https://www.sismicsdocs.com) -- Join us [on Facebook](https://www.facebook.com/sismicsdocs) - License ------- -Docs is released under the terms of the GPL license. See `COPYING` for more +Teedy is released under the terms of the GPL license. See `COPYING` for more information or see . diff --git a/docs-android/app/build.gradle b/docs-android/app/build.gradle index 25cfc4f4..1e5664eb 100644 --- a/docs-android/app/build.gradle +++ b/docs-android/app/build.gradle @@ -4,7 +4,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.4.0' } } apply plugin: 'com.android.application' diff --git a/docs-android/app/src/main/AndroidManifest.xml b/docs-android/app/src/main/AndroidManifest.xml index 66708a1d..32699962 100644 --- a/docs-android/app/src/main/AndroidManifest.xml +++ b/docs-android/app/src/main/AndroidManifest.xml @@ -8,13 +8,14 @@ + + android:theme="@style/AppTheme"> parent, View view, int position, long id) { @@ -88,15 +88,15 @@ public class AuditLogActivity extends AppCompatActivity { * Refresh the view. */ private void refreshView(String documentId) { - final SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); - final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); - final ListView auditLogListView = (ListView) findViewById(R.id.auditLogListView); + final SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout); + final ProgressBar progressBar = findViewById(R.id.progressBar); + final ListView auditLogListView = findViewById(R.id.auditLogListView); progressBar.setVisibility(View.VISIBLE); auditLogListView.setVisibility(View.GONE); AuditLogResource.list(this, documentId, new HttpCallback() { @Override public void onSuccess(JSONObject response) { - auditLogListView.setAdapter(new AuditLogListAdapter(response.optJSONArray("logs"))); + auditLogListView.setAdapter(new AuditLogListAdapter(AuditLogActivity.this, response.optJSONArray("logs"))); } @Override diff --git a/docs-android/app/src/main/java/com/sismics/docs/adapter/AuditLogListAdapter.java b/docs-android/app/src/main/java/com/sismics/docs/adapter/AuditLogListAdapter.java index 83c03f35..912f9d81 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/adapter/AuditLogListAdapter.java +++ b/docs-android/app/src/main/java/com/sismics/docs/adapter/AuditLogListAdapter.java @@ -1,8 +1,6 @@ package com.sismics.docs.adapter; import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.View; @@ -30,12 +28,19 @@ public class AuditLogListAdapter extends BaseAdapter { */ private List logList; + /** + * Context. + */ + private Context context; + /** * Audit log list adapter. * + * @param context Context * @param logs Logs */ - public AuditLogListAdapter(JSONArray logs) { + public AuditLogListAdapter(Context context, JSONArray logs) { + this.context = context; this.logList = new ArrayList<>(); for (int i = 0; i < logs.length(); i++) { @@ -67,11 +72,21 @@ public class AuditLogListAdapter extends BaseAdapter { // Build message final JSONObject log = getItem(position); - StringBuilder message = new StringBuilder(log.optString("class")); + StringBuilder message = new StringBuilder(); + + // Translate entity name + int stringId = context.getResources().getIdentifier("auditlog_" + log.optString("class"), "string", context.getPackageName()); + if (stringId == 0) { + message.append(log.optString("class")); + } else { + message.append(context.getResources().getString(stringId)); + } + message.append(" "); + switch (log.optString("type")) { - case "CREATE": message.append(" created"); break; - case "UPDATE": message.append(" updated"); break; - case "DELETE": message.append(" deleted"); break; + case "CREATE": message.append(context.getResources().getString(R.string.auditlog_created)); break; + case "UPDATE": message.append(context.getResources().getString(R.string.auditlog_updated)); break; + case "DELETE": message.append(context.getResources().getString(R.string.auditlog_deleted)); break; } switch (log.optString("class")) { case "Document": @@ -85,9 +100,9 @@ public class AuditLogListAdapter extends BaseAdapter { } // Fill the view - TextView usernameTextView = (TextView) view.findViewById(R.id.usernameTextView); - TextView messageTextView = (TextView) view.findViewById(R.id.messageTextView); - TextView dateTextView = (TextView) view.findViewById(R.id.dateTextView); + TextView usernameTextView = view.findViewById(R.id.usernameTextView); + TextView messageTextView = view.findViewById(R.id.messageTextView); + TextView dateTextView = view.findViewById(R.id.dateTextView); usernameTextView.setText(log.optString("username")); messageTextView.setText(message); String date = DateFormat.getDateFormat(parent.getContext()).format(new Date(log.optLong("create_date"))); diff --git a/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java b/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java index a5f24ce3..80797651 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java +++ b/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java @@ -33,6 +33,7 @@ public class LanguageAdapter extends BaseAdapter { } languageList.add(new Language("fra", R.string.language_french, R.drawable.fra)); languageList.add(new Language("eng", R.string.language_english, R.drawable.eng)); + languageList.add(new Language("deu", R.string.language_german, R.drawable.deu)); } @Override diff --git a/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java b/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java index 37798759..18894039 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java +++ b/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java @@ -63,14 +63,13 @@ public class DocListFragment extends Fragment { recyclerView.setAdapter(adapter); recyclerView.setHasFixedSize(true); recyclerView.setLongClickable(true); - recyclerView.addItemDecoration(new DividerItemDecoration(getResources().getDrawable(R.drawable.abc_list_divider_mtrl_alpha))); // Configure the LayoutManager final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); // Configure the swipe refresh layout - swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout); + swipeRefreshLayout = view.findViewById(R.id.swipeRefreshLayout); swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, @@ -194,7 +193,7 @@ public class DocListFragment extends Fragment { private void loadDocuments(final View view, final boolean reset) { if (view == null) return; final View progressBar = view.findViewById(R.id.progressBar); - final TextView documentsEmptyView = (TextView) view.findViewById(R.id.documentsEmptyView); + final TextView documentsEmptyView = view.findViewById(R.id.documentsEmptyView); if (reset) { loading = true; diff --git a/docs-android/app/src/main/java/com/sismics/docs/service/FileUploadService.java b/docs-android/app/src/main/java/com/sismics/docs/service/FileUploadService.java index 07fcb6cd..4a17325a 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/service/FileUploadService.java +++ b/docs-android/app/src/main/java/com/sismics/docs/service/FileUploadService.java @@ -1,10 +1,12 @@ package com.sismics.docs.service; import android.app.IntentService; +import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.net.Uri; +import android.os.Build; import android.os.PowerManager; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat.Builder; @@ -29,7 +31,8 @@ import okhttp3.internal.Util; * @author bgamard */ public class FileUploadService extends IntentService { - private static final String TAG = "FileUploadService"; + private static final String TAG = "sismicsdocs:fileupload"; + private static final String CHANNEL_ID = "FileUploadService"; private static final int UPLOAD_NOTIFICATION_ID = 1; private static final int UPLOAD_NOTIFICATION_ID_DONE = 2; @@ -49,18 +52,30 @@ public class FileUploadService extends IntentService { super.onCreate(); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - notification = new NotificationCompat.Builder(this); + initChannels(); + notification = new NotificationCompat.Builder(this, CHANNEL_ID); PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); } + private void initChannels() { + if (Build.VERSION.SDK_INT < 26) { + return; + } + + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, + "File Upload", NotificationManager.IMPORTANCE_HIGH); + channel.setDescription("Used to show file upload progress"); + notificationManager.createNotificationChannel(channel); + } + @Override protected void onHandleIntent(Intent intent) { if (intent == null) { return; } - wakeLock.acquire(); + wakeLock.acquire(60_000 * 30); // 30 minutes upload time maximum try { onStart(); handleFileUpload(intent.getStringExtra(PARAM_DOCUMENT_ID), (Uri) intent.getParcelableExtra(PARAM_URI)); @@ -77,7 +92,7 @@ public class FileUploadService extends IntentService { * * @param documentId Document ID * @param uri Data URI - * @throws IOException + * @throws IOException e */ private void handleFileUpload(final String documentId, final Uri uri) throws Exception { final InputStream is = getContentResolver().openInputStream(uri); diff --git a/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java b/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java index 8ab91793..26077f6f 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java +++ b/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java @@ -156,7 +156,7 @@ public class OkHttpUtil { public static OkHttpClient buildClient(final Context context) { // One-time header computation if (userAgent == null) { - userAgent = "Sismics Docs Android " + ApplicationUtil.getVersionName(context) + "/Android " + Build.VERSION.RELEASE + "/" + Build.MODEL; + userAgent = "Teedy Android " + ApplicationUtil.getVersionName(context) + "/Android " + Build.VERSION.RELEASE + "/" + Build.MODEL; } if (acceptLanguage == null) { diff --git a/docs-android/app/src/main/java/com/sismics/docs/util/SearchQueryBuilder.java b/docs-android/app/src/main/java/com/sismics/docs/util/SearchQueryBuilder.java index 42522174..107d289f 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/util/SearchQueryBuilder.java +++ b/docs-android/app/src/main/java/com/sismics/docs/util/SearchQueryBuilder.java @@ -39,7 +39,9 @@ public class SearchQueryBuilder { */ public SearchQueryBuilder simpleSearch(String simpleSearch) { if (isValid(simpleSearch)) { - query.append(SEARCH_SEPARATOR).append(simpleSearch); + query.append(SEARCH_SEPARATOR) + .append("simple:") + .append(simpleSearch); } return this; } diff --git a/docs-android/app/src/main/res/drawable-xhdpi/deu.png b/docs-android/app/src/main/res/drawable-xhdpi/deu.png new file mode 100644 index 00000000..f459ec25 Binary files /dev/null and b/docs-android/app/src/main/res/drawable-xhdpi/deu.png differ diff --git a/docs-android/app/src/main/res/drawable-xxhdpi/deu.png b/docs-android/app/src/main/res/drawable-xxhdpi/deu.png new file mode 100644 index 00000000..9468588d Binary files /dev/null and b/docs-android/app/src/main/res/drawable-xxhdpi/deu.png differ diff --git a/docs-android/app/src/main/res/layout/doc_list_item.xml b/docs-android/app/src/main/res/layout/doc_list_item.xml index 0aae61da..a0e35439 100644 --- a/docs-android/app/src/main/res/layout/doc_list_item.xml +++ b/docs-android/app/src/main/res/layout/doc_list_item.xml @@ -29,7 +29,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" - android:textColor="#212121" + android:textColor="?android:attr/textColorPrimary" android:text="Test" android:textSize="16sp" android:ellipsize="end" @@ -46,7 +46,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" - android:textColor="#777777" + android:textColor="?android:attr/textColorPrimary" android:text="test2" android:textSize="16sp" android:maxLines="1" @@ -69,7 +69,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" - android:textColor="#777777" + android:textColor="?android:attr/textColorPrimary" android:fontFamily="sans-serif-light"/> \ No newline at end of file diff --git a/docs-android/app/src/main/res/layout/main_activity.xml b/docs-android/app/src/main/res/layout/main_activity.xml index e5375a54..8abdcf2f 100644 --- a/docs-android/app/src/main/res/layout/main_activity.xml +++ b/docs-android/app/src/main/res/layout/main_activity.xml @@ -9,23 +9,22 @@ - - - - + android:layout_height="wrap_content"> - + + + + + + + + Ungültige E-Mail + Zu kurz (min. %d) + Zu lang (max. %d) + Erforderlich + Nur Buchstaben und Zahlen + + + Navigationsleiste öffnen + Navigationsleiste schließen + github.com/sismics/docs, sowie die Login-Daten unten eingeben]]> + Server + Username + Password + Login + OK + Abbrechen + Login gescheitert + Benutzername oder Passwort falsch + Netzwerkfehler + Netzwerkfehler, überprüfen Sie die Internetverbindung und die Server-URL + Ungültige URL + Bitte überprüfen Sie die Server-URL und versuchen Sie es erneut + Ein Absturz ist aufgetreten, ein Bericht wurde gesendet, um dieses Problem zu beheben + Erstellungsdatum + Aktuelle Datei herunterladen + Herunterladen + Dokumente durchsuchen + Alle Dokumente + Geteilte Dokumente + Alle Tags + Keine Tags + Fehler beim Laden von Tags + Keine Dokumente + Fehler beim Laden von Dokumenten + Keine Dateien + Fehler beim Laden von Dateien + Neues Dokument + Teilen + Schließen + Hinzufügen + Freigabename (optional) + Dieses Dokument wird derzeit nicht freigegeben + Diese Freigabe löschen + Send this share link + Fehler beim Laden von Freigaben + Fehler beim Hinzufügen der Freigabe + Freigabe Link + Fehler beim Löschen der Freigabe + Freigabe senden an + Datei hinzufügen + Datei hochladen von + Einstellungen + Ausloggen + Version + Build + Erweiterte Einstellungen + Über + GitHub + Fehler berichten + Cache leeren + Zwischengespeicherte Dateien löschen + Cache wurde geleert + Suchhistorie löschen + Leert die aktuellen Suchvorschläge + Suchvorschläge wurden gelöscht + Cache Größe + Speichern + Bearbeiten + Netzwerkfehler, bitte versuchen Sie es erneut + Bitte warten + Daten werden gesendet + Löschen + Dokument löschen + Dieses Dokument und alle zugehörigen Dateien wirklich löschen? + Netzwerkfehler beim Löschen des Dokuments + Lösche Dokument + Datei löschen + Die aktuelle Datei wirklich löschen? + Netzwerkfehler beim Löschen der Datei + Lösche Datei + Fehler beim Lesen der Datei + Teedy + Neue Datei in das Dokument hochladen + Fehler beim Hochladen der neuen Datei + Aktuelle Datei löschen + Erweiterte Suche + Suche + Tags hinzufügen + Erstellungsdatum + Beschreibung + Titel + Einfache Suche + Volltextsuche + Ersteller + Nach Datum + Vor Datum + Tags durchsuchen + Alle Sprachen + Informationen anzeigen + Wer kann darauf zugreifen? + Kommentare + Keine Kommentare + Fehler beim Laden von Kommentaren + Senden + Kommentar hinzufügen + Fehler beim Hinzufügen des Kommentars + Füge Kommentar hinzu + Kommentar löschen + Lösche Kommentar + Fehler beim Löschen des Kommentars + PDF + Download + Rand + Bild an Seite anpassen + Kommentare exportieren + Metadaten exportieren + mm + Teedy Datei Export + Teedy Dokumentenexport + Teedy PDF Export + Letzte Aktivität + Aktivitäten + E-Mail + Speicherbegrenzung + %1$d/%2$d MB + Validierungscode + Geteilt + Sprache + Geltungsbereich + Typ + Quelle + Format + Verleger + Identifikator + Thema + Rechte + Mitwirkende + Beziehungen + + + ACL + Kommentar + Dokument + Datei + Gruppe + Workflow + Workflow-Muster + Tag + Benutzer + Webhook + erstellt + aktualisiert + gelöscht + + diff --git a/docs-android/app/src/main/res/values-fr/strings.xml b/docs-android/app/src/main/res/values-fr/strings.xml index 8933a715..79910dcc 100644 --- a/docs-android/app/src/main/res/values-fr/strings.xml +++ b/docs-android/app/src/main/res/values-fr/strings.xml @@ -11,7 +11,7 @@ Ouvrir le menu de navigation Fermer le menu de navigation - github.com/sismics/docs et entrer son URL ci-dessous]]> + github.com/sismics/docs et entrer son URL ci-dessous]]> Serveur Nom d\'utilisateur Mot de passe @@ -83,7 +83,7 @@ Erreur réseau lors de la suppression du fichier Suppression du fichier Erreur lors de la lecture du fichier - Sismics Docs + Teedy Envoi du nouveau fichier Erreur lors de l\'envoi du nouveau fichier Supprimer ce fichier @@ -119,9 +119,9 @@ Exporter les commentaires Exporter les métadonnées mm - Export de fichier Sismics Docs - Export de document Sismics Docs - Export PDF Sismics Docs + Export de fichier Teedy + Export de document Teedy + Export PDF Teedy Activité récente Activité E-mail @@ -141,4 +141,19 @@ Contributeurs Relations + + ACL + Commentaire + Document + Fichier + Groupe + Workflow + Modèle de workflow + Tag + Utilisateur + Webhook + créé + mis à jour + supprimé + diff --git a/docs-android/app/src/main/res/values/strings.xml b/docs-android/app/src/main/res/values/strings.xml index 5d453293..65dd4d83 100644 --- a/docs-android/app/src/main/res/values/strings.xml +++ b/docs-android/app/src/main/res/values/strings.xml @@ -9,10 +9,10 @@ Only letters and numbers - Sismics Docs + Teedy Open navigation drawer Close navigation drawer - github.com/sismics/docs and enter its below]]> + github.com/sismics/docs and enter its below]]> Server Username Password @@ -71,6 +71,7 @@ Cache size Français English + Deutsch Save Edit Network error, please try again @@ -86,7 +87,7 @@ Network error while deleting the current file Deleting file Error while reading the file - Sismics Docs + Teedy Uploading the new file to the document Error uploading the new file Delete current file @@ -122,9 +123,9 @@ Export comments Export metadata mm - Sismics Docs file export - Sismics Docs document export - Sismics Docs PDF export + Teedy file export + Teedy document export + Teedy PDF export Latest activity Activity E-mail @@ -144,4 +145,19 @@ Contributors Relations + + ACL + Comment + Document + File + Group + Workflow + Workflow model + Tag + User + Webhook + created + updated + deleted + diff --git a/docs-android/app/src/main/res/values/styles.xml b/docs-android/app/src/main/res/values/styles.xml index 953c239b..62458393 100644 --- a/docs-android/app/src/main/res/values/styles.xml +++ b/docs-android/app/src/main/res/values/styles.xml @@ -1,12 +1,12 @@ - - -