Giter Club home page Giter Club logo

piwigo-android's Introduction

Piwigo logo

Manage your photo library. Piwigo is open source photo gallery software for the web. Designed for organisations, teams and individuals.

screenshot

The piwigo.org website introduces you to Piwigo. You'll find a demo, forums, wiki and news.

Requirements

  • A webserver (Apache or nginx recommended)
  • PHP 7.4+. Piwigo can run with PHP 7.0+ but these end-of-life versions are no longer maintained and may expose your site to security vulnerabilities.
  • MySQL 5 or greater or MariaDB equivalent
  • ImageMagick (recommended) or PHP GD

Quick start install

NetInstall

More information

Manual

More information

If you do not have your own server, consider the piwigo.com hosting solution.

Contributing

Piwigo is widely driven by its community; if you want to improve the code, fork this repo and submit your changes to the master branch. See our Contribution guide.

License

Piwigo is released under the GPL v2 license. See our Copying details.

piwigo-android's People

Contributors

acleu avatar coolo avatar dotvhs avatar jeff-amn avatar persandstrom avatar philio avatar radass1996 avatar ramack avatar remi-martin avatar valou447 avatar walikdik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

piwigo-android's Issues

Login fails with error 403

Seems like I have some setup issue - possible on my webserver. But maybe you have a clue for me as well :-)

When I try to login I get "You don't have permission to access /piwigo/ws.php on this server.". My .htaccess is the standard empty one. Still, something seems to be blocking access. Happens in FF directly as well.

I tried google and searching the piwigo forum but didn't see anything helpful. Any idea?

Have a good weekend!

Refactor or replace RecyclerView bindings

The current implementation is too basic.
We unfortunately need to hit the API for each cover photo because the thumb from categories request is very low quality on a phone.
We could ease this work by providing a better UX and streaming records to the adapter before requests are complete.
Alternatively (probably better) return result of first request to populate adapter and then lazy load the rest.

Album Navigation

In the action bar we should

  • show the name of the current (sub-)album (decribed in #69) (done in #127 )
  • allow "up" navigation to parent album instead of the sandwich to open the navigation drawer

Automatic uploading

If enabled in the settings every new photo on the device could be automatically updated. Alternative could be to put them in an update queue to edit title, tags, etc. and selecting where and whether at all before uploading.

Uploading Images - need token

@Philio or @ramack - I have been working on code to upload an image - I think it will work if I can figure out how to get the session token. I need to be able to pass the session token from the MainActivity class. Any thoughts?

Create About Activity

show properties like

  • current version
  • where to report issues and feature requrests
  • License information (inclduing which libraries are used)
  • the developers / contributors of this app

Edit:

  • add actionbar
  • fix drawer menu highlighting (shall not be highligted for this one here)
  • fix backstack

Show Photo in Full Screen

Clicking a photo shall open it in full screen mode with possibility to zoom.
Preferably with a setting to show all photos in the current device rotation, or with auto-rotation to best fit to the screen.

become FLOSS-only (f-droid compatibility)

Piwigo-Android should be fully FLOSS without non-free dependencies and shipped by f-droid. Currently at least the non-free libs fabric and crashlytics is used which I suggest to remove and check for all other non-free libraries.

I already asked for advice in the f-droid forum about this: https://forum.f-droid.org/t/fabric-io-what-do-you-think/

I (@ramack) personally am willing to contribute to this good start for an android app for piwigo, but only if it is fully FLOSS. I even would suggest to change the projects license to GPLv3+ as mentioned in #11. So please @Philio and @jeff-amn tell your opinion about these topics and guide me to whether I should contribute here or fork or go away...

Session concept is flawed

The Session class solved an immediate issue when wanting to test a few simple rest requests against the API in that it provided a valid cookie to authenticate the request.

It is unfortunately fairly useless when user has multiple accounts as it blindly assumes that the cookie stored is applicable to a request for any account.

Simple scenario:

I select account 1 in the UI, we update the session.
App wants to sync for account 2 in the background, wrong cookie will be used.

Proposed solution:

We really need a separate rest client per user, e.g.

Create OkHttp3 client, set the cookie from the account so that it can be sent with every request automatically.
Create Retrofit client using OkHttp3 client and base url from the account

Keep a "cache" of each client on a per account basis, essentially just a map Map<Account, RestClient>

Might be possible to use a custom scope although we perhaps need it to be a bit more dynamic.

apk release?

Hello.

Would it be possible for you to publish an apk of the app so that I can use it without having to setup a build environment at my end?

Thank you very much!

Show a Map

Show a Map with the location of the photos and albums.

first release

  • create a milestone for the first 3 releases @plegall
  • assign tickets to this milestone, I propose to include #7. #8, #10, #12, #24, #30, and #32
  • create a beta version and publish it on gplay (see #4 )
  • ask the piwigo community for testing
  • publish first release.

edit: add reference to #4

Video support

support uploading, and showing videos, also edit delete and download them.

NPE for empty albums

If there is an empty album a NullPointerException is thrown in AlbumsViewModels.java:98
AlbumItemViewModel viewModel = new AlbumItemViewModel(item.second.derivatives.large.url, item.first.name, photos);
as item.second == null in that case.

I think there should be a default image that is shown in the case of an empty album or the album should be hidden completely (I prefer the first, as the user might want to add pictures to it)

Account - can not create a new account

There is an issue with the progress spinner keeps the login screen from displaying. This was @Philio latest code before @ramack merged my changes. @ramack - is this something you can take a look at - the spinner has never worked right - very annoying. It did comment out some of the spinner code in my working repos code I just uploaded - so I could finish working on upload code.

NullPointerException on app debug

I'm receiving a NullPointerException upon debugging the app on my phone.

Not sure what the best way of posting the logcat is. Going to just post it as code:

06-03 00:10:47.104 10126-10126/? I/zygote64: Late-enabling -Xcheck:jni
06-03 00:10:47.508 10126-10126/org.piwigo.debug I/InstantRun: starting instant run server: is main process
06-03 00:10:47.901 10126-10153/org.piwigo.debug D/OpenGLRenderer: HWUI GL Pipeline
06-03 00:10:49.140 10126-10126/org.piwigo.debug I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
06-03 00:10:49.158 10126-10126/org.piwigo.debug I/chatty: uid=10276(org.piwigo.debug) identical 1 line
06-03 00:10:49.177 10126-10126/org.piwigo.debug I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
06-03 00:10:49.238 10126-10126/org.piwigo.debug D/ViewRootImpl[LoginActivity]: changeCanvasOpacity: opaque=false
06-03 00:10:49.254 10126-10126/org.piwigo.debug D/AndroidRuntime: Shutting down VM
06-03 00:10:49.257 10126-10126/org.piwigo.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.piwigo.debug, PID: 10126
    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.github.jorgecastilloprz.progressarc.ProgressArcView.stop()' on a null object reference
        at com.github.jorgecastilloprz.FABProgressCircle.hide(FABProgressCircle.java:166)
        at org.piwigo.internal.binding.adapter.FABProgressCircleBindingAdapter.setState(FABProgressCircleBindingAdapter.java:40)
        at org.piwigo.databinding.ActivityLoginBinding.executeBindings(ActivityLoginBinding.java:461)
        at android.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:379)
        at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:351)
        at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:178)
        at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:146)
        at android.view.View.dispatchAttachedToWindow(View.java:17456)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3333)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3333)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3333)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3333)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3333)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1668)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-03 00:10:49.275 10126-10126/org.piwigo.debug I/Process: Sending signal. PID: 10126 SIG: 9

Googling the issue comes up with this: JorgeCastilloPrz/FABProgressCircle#24

Obviously, Piwigo-Android is calling the hide() method incorrectly. Commenting it out in fact allows me to start the app, login, and see the list of root albums.

Not sure what a proper fix of this would be. Anyone else has an idea?

Translation project

I propose to setup a project in one of the translation platforms out there. As I have already experience with crowdin I'd propose to setup that, but I am open to anything. @plegall what is used in piwigo to translate?

additionally for the first release I propose to add already a translation for the 3-4 most important languages. @plegall what are they?

support community plugin

@EddyLB wrote in #20:
I suggest to add Compatibility with the Community plugin (which should have been added to the current list of features of the iOS app). Many users requested it.

@EddyLB can you elaborate what that technically means? And also feel free to submit such kind of proposals directly in a new ticket.

Calendar View

Add a Calendar view to quickly search for photos at some time.

Could be a real calendar which bold days/weeks/months that have photos, but also maybe a list of ALL photos and while scrolling though the list the date is shown.

Exception on start and no albums shown

Hi,

had a look at the app again today and with the current sync I'm seeing the following:

  • On first start I entered url, user, pwd but received "Login failed"
  • After rebuild & restart I wasn't asked for credentials but the app started with an empty "Albums" page
  • Exception when starting:
02-07 21:19:48.958 2308-2366/org.piwigo.debug D/Retrofit: ---- ERROR 
02-07 21:19:49.171 2308-2366/org.piwigo.debug D/Retrofit: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
                                                              at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:87)
                                                              at java.lang.StringBuilder.<init>(StringBuilder.java:95)
                                                              at retrofit.RequestBuilder.build(RequestBuilder.java:390)
                                                              at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:302)
                                                              at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
                                                              at retrofit.RestAdapter$RestHandler$1.invoke(RestAdapter.java:265)
                                                              at retrofit.RxSupport$2.run(RxSupport.java:55)
                                                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                              at retrofit.Platform$Android$2$1.run(Platform.java:142)
                                                              at java.lang.Thread.run(Thread.java:818)
02-07 21:19:49.171 2308-2366/org.piwigo.debug D/Retrofit: ---- END ERROR
02-07 21:19:49.184 2308-2308/org.piwigo.debug E/org.piwigo.ui.viewmodel.AlbumsViewModel: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

Running in Android Studio 1.5.1 under Win10.

Thomas

COPYING and AUTHORS files missing

No license text included in the repository, I suggest to add a file COPYING with the license text and a file AUTHORS with the names of the main contributors.

In the files Phil has given a reference to the APACHE-2.0 license, so the obvious would be to include that license. I personally would prefer GPLv3+ as license and suggest to change it. (Also Piwigo is GPL - thought 2.0 and personal preference.)

Also an about dialog should mention the license.

Delete, move and rename albums

The app shall support deletion, moving and renaming albums.

Edit: in a menu of the action bar, the currently shown album, and sub-album maybe by sliding them away which unveils an the corresponding actions.

Status of this project?

Hi,

I have run across this project while looking for some info in the piwigo forum. Unfortunately, I can't find any documentation on it here. So I was wondering if anyone could share some details on status, documentation, ...?

Given the current lack of Android support I have started to code my own small app (in javafx for desktop & Android) to upload pictures to an album. But if possible I would prefer to use/reuse something thats already there :-)

Thanks,
Thomas

Communication channels

I think we need some communication channels for

  • developers inside Piwigo-Android, for discussions not suitable for github issues
  • translators
  • beta-test users
  • users to send crashreports

The last one is more or less fixed to be an e-mail-address, can we have one on the piwigo.org domain, the others I don't care about the technology. @EddyLB: how is all this handled for Piwigo-Mobile?

add settings

add an activity for settings
@EddyLB can you point us to a screenshot (or list of settings) of the iOS app?

Extend photo upload / edit possibilities

Allow to upload

  • via FAB "+" to directly select file to upload into the current album (see #104)
  • of modifiable size and quality
  • tags, EXIF metadata,
  • with or without GPS metadata,
  • upload in background one file after the other (see #118)
  • show a progress bar in the notification

Looking for contributors

I have been playing around with the code some and would be interested in working with others to help push this project forward. I work full-time so it would be a little here and there for me.

Are there others out there that would be interested in helping?

Phil - is this project on the back burner for you? Do you have any doc that outlines your path for development? Do you have time to architect this if others could do the coding?

Search Ability

we should allow searching for title, tags, descriptions, author? within the app

Add setting to remove private metadata (geo location and exif tags "user comment" and "subject location")

GPS data is concerning privacy, we should add a setting to remove it (beside exif tags "user comment" and "subject location")

Setting can have the options

  • strip private metadata (GPS data and exif tags ... are removed before uploading)
  • keep private metadata (metadata not modified before upload)
  • ask (default) (if GPS data, user comment or subject location is available in the metadata)

I'd even like to see this setting gallery specific, as I have two gelleries, one for private use, where I'd like to have the GPS data always, and a public one where I'd like to be asked every time.

@EddyLB: how is it done on iOS?

edit: refined issue with description of what is considered private metadata

Displaying photos for an Album

I finally figured out how to capture the touch of an album:

Added last line to Imageview in item_album.xml

ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:heightRatio="@{0.66}"
app:srcUrl="@{viewModel.url}"
android:onClick="@{() -> viewModel.onViewAlbumPhotos()}"

And added this code in AlbumItemViewModel:

public void onViewAlbumPhotos(){
String test = url;
}

with a break point on the assignment of test I can see the url for each album

Now looking for any input on the best way to build the resource and display for the photos.

I think I can model it off of the AlbumItemViewModel - should be very similar.

Release publishing

Publishing a release to GPlay can be done manually, or with one of several tools. I propose to use fastlane or triple-T for this. While I have experience with the latter, I am completely open, but I think it would be helpful to use such a tool.

compiling the source fails

during compilation of the git HEAD I get
Error:(26, 30) error: package org.piwigo.databinding does not exist

-> removing
apply plugin: 'com.neenbedankt.android-apt'
from build.gradle seems to solve it

edit account setting

account settings are not editable. Allow change via long-click and menu.

handle special cases for guest users

@plegall can you explain the guest account specialites? Is the guest-account name fixed to guest and always using an empty password? Or can a piwigo gallery have an account names guest with an non-empty pw?

Add privacy policy

As we are handling sensitive user information - photos and user account data, we need to have a privacy policy for the app. IANAL but it seems we need to have a public web page, with the policy. It should include

  • Who is the site/app owner?
  • what kind of data we store and record (user account data, all documents and data entered) and for which purpose
  • that we pass this data to the site the user has entered, and therefore the privacy policy of the operator of the accessed galleries need to be referred (is there one for piwigo.org/demo for example?)
  • the app itself need to show the privacy policy
  • What third parties will have access to the information? Will any third party collect data through widgets (e.g. social buttons) and integrations (e.g. facebook connect)?
  • do not forget crash reporting emails
  • What rights do users have? Can they request to see the data you have on them, can they request to rectify, erase or block their data (under European regulations most of this is mandatory)?
  • Description of process for notifying users and visitors of material changes to the privacy policy
  • Effective date of the privacy policy
  • included in the about section of the app

How does the iOS app handle that?

Edit: Open:

  • Show Privacy Policy in app
  • update link in Readme to the official location of the policy

Ability to cache images - data consumption

Downloading images (especially album images that don't change) can consume a bit of data and the app should probably be sensitive to the amount of data being used. Just wanted to throw this out so that is can be considered during the development. I personally could also see phones with an SD card being able to download and store albums - for me personally I usually show the most current photos more often after they are taken and does it make sense to keep downloading them - usually I am using mobile data when doing that. Nothing that has to be acted on at the moment but just wanted to throw it out there so the architecture could support it if deemed a usable feature.

support facetag extension

interpret face tags in exif data (and/or facetag extension), allow to add, delete modify names and face tags.

Wiki - for development purposes

I propose to enable the wiki on github, to document some things for developers (and maybe also users). The following things come to my mind:

  • convention how to name versions in the versionName, e.g. "-dev" during development, "-beta" for a prerelease, published in the beta track and no suffix for release versions
  • a checklist what needs to be done for a new release
  • major design decisions
  • everything that seems to be helpful to start contributing - I'd even propose to answer most of the questions raised by new potential developers in the wiki, to get a more and more complete knowledge base / design documentation

@jeff-amn @plegall what do you think?

Should the Android app share any of the look/feel or features of the iOS app

Happen to cross my mind that since the iOS app is already done - should the Android app share any similarity. The benefit could be that if they both behave in a similar way then people using both platforms would have a similar experience on both platforms. Our family has both iOS and Android devices.

Just a thought.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.