Coder Social home page Coder Social logo

openpsa's Introduction

OpenPSA

OpenPSA is a management suite for web agencies and consultants that provides a unified interface for handling many common business processes. It is built on a component architecture that makes it easy to integrate new components for specific requirements and is available as free software under the terms of the LGPL license.

OpenPSA 1.x was initially released as Open Source under the GNU GPL license by Nemein on May 8th 2004 to support the 5th anniversary of the Midgard Project. The package was originally known as Nemein.Net.

The currently active branch (OpenPSA 9) is developed and supported by CONTENT CONTROL.

Read more in http://openpsa2.org/

Setup

You can either clone this repo or add openpsa/midcom to your composer.json

Then, change to your project's root dir and use Composer to install PHP dependencies

$ wget http://getcomposer.org/installer && php installer
$ php composer.phar install

This will setup the project directory for OpenPSA usage. Next you should make OpenPSA available under your document root:

$ ln -s web /var/www/yourdomain

You can then create new database by running:

$ ./vendor/bin/openpsa-installer midgard2:setup

This will also create a default user with admin/password which you can later use to access the admin interface. See the openpsa-installer documentation for more details.

Setting up Apache

Make sure that you have mod_rewrite enabled:

a2enmod rewrite

And use something like this in your vhost config (or .htaccess file):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /openpsa/rootfile.php [QSA,L]

Setting up Lighttpd

Alternatively, you can also run under lighttpd (or any other web server, for that matter). Enable rewrite and fastcgi modules in your Lighttpd config (by default /etc/lighttpd/lighttpd.conf):

server.modules += (
    "mod_fastcgi",
    "mod_rewrite"
)

Also enable FastCGI to talk to your PHP installation:

fastcgi.server = (
    ".php" => (
        (
            "bin-path" => "/usr/bin/php-cgi",
            "socket" => "/tmp/php.socket"
        )
    )
)

Then just configure your Lighttpd to pass all requests to the OpenPSA "rootfile":

url.rewrite-once = (
    "^/openpsa2-static/OpenPsa2/(.*)$" => "/openpsa/themes/OpenPsa2/static/$1",
    "^/openpsa2-static/(.*)$" => "/openpsa/static/$1",
    "^([^\?]*)(\?(.+))?$" => "openpsa/rootfile.php$2"
)

Note: this rewrite rule is a bit too inclusive, to be improved.

openpsa's People

Contributors

bergie avatar duakayra avatar erfannaz avatar flack avatar gudd avatar jannig89 avatar lauradjhernando avatar lukaszchalat avatar miladashrafilarijani avatar pardoccb avatar rguddmtc avatar satelines avatar simonrautenberg 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

openpsa's Issues

Contacts: Google Contacts sync

Reported by bergie on 9 Jan 1959 19:25 UTC
Quite a lot of companies are using Google Apps for Enterprise. Synchronizing with Google Contacts would make OpenPSA sit better in that environment.

There are two sync APIs available:

* Read-only: http://code.google.com/apis/contacts/docs/poco/1.0/developers_guide.html
* Read-and-write: http://code.google.com/apis/contacts/docs/3.0/developers_guide.html 

Migrated-From: http://trac.openpsa2.org/ticket/19

Redirect after tree copy is broken

Reported by flack on 7 Sep 1945 09:15 UTC
If you copy an object tree in Asgard, everything works fine, but the redirect afterwards leads to a 404 (there's no object GUID in the URL)

Port m.a.settings to mgd2

Reported by flack on 25 Mar 1958 18:30 UTC
Settings reads/writes only to code-init which is ignored in mgd2. Either the settings component needs another backend for writing to a config file or the mgd2 rootfile needs support for loading the appropriate code-init page element (which could be a problem, considering that there is no midgard_page)

Delete account option in contact management

Reported by flack on 22 Aug 1967 05:41 UTC
Since you can create and edit accounts on-site, you should also have the possibility to delete them. The function already exists, but there is no UI for it yet

Implement contextview functionality

Reported by flack on 24 Oct 1961 07:52 UTC
Many object view handlers in openpsa include code to display lists of related objects (for example customer's inovoices, hour reports for task). Query and display logic for these should be centralized in an o.o.relatedto handler.

In step 2, these lists should be displayed inside jquery.ui tabs which are loaded on-demand to keep unnecessary db traffic down.

calendar should handle schedule conflicts more gracefully

Reported by flack on 27 Aug 1986 06:24 UTC
ATM, when you try to save or edit an event which overlaps another but doesn't have overlapping allowed, you get the following error:

Server Error

Failed to save the data to disk, last Midgard error: Undefined error. Check the debug level log for more information.
Error 500

which is of course not so helpful

Split task-grid into two style elements

Reported by flack on 18 Sep 1943 01:17 UTC
The agreement view is different enough in its layout to merit its own style element, this will also fix some annoying resizing problems.

projects: unlimited task nesting

Reported by flack on 24 Aug 1904 07:40 UTC
The database schema already supports creating subtasks to tasks, but this is not implemented in the GUI or in the handler code. Things like the accumulation of reported/planned hours to parent tasks (and finally to top-level tasks, i.e. projects) have to be added as well

Migrated-From: http://trac.openpsa2.org/ticket/17

Metadata editing broken under mgd2

Reported by flack on 9 Sep 2003 20:23 UTC
When accessing the form, this warning appears, followed by a server error:

( ! ) Warning: First parameter must either be an object or the name of an existing class in /var/git-repos/openpsa/lib/midcom/helper/datamanager2/storage/midgard.php on line 118

Implement lost connection callback

Reported by flack on 5 Jan 1966 22:48 UTC
Under Midgard2/lighttpd, I once in a while get

( ! ) Warning: Failed to reopen lost connection in Unknown on line 0
( ! ) Fatal error: Midgard handle-lookup failed (could not connect to database) in Unknown on line 0

There should be a callback connected to the lost connection signal that tries to reconnect and then re-start request handling. This has to have a maximum number of retries for situations where the db is really unreachable

Eliminate usage of mgd_preparse

Reported by flack on 14 Sep 1921 16:58 UTC
Native Midgard1 mgd_preparse behaves differently from the PHP-level replacement in lib/ragnaroek-compat.php (one resolves elements against the database, the other against the file system). The best solution would be to supersede the two with an integrated midcom solution, and maybe to do away with ROOT style requirement for mgd1 in the process.

Refactor midcom_config to class

Reported by flack on 9 Apr 1993 13:46 UTC
GLOBALS['midcom_config'] should be replaced by a class wrapper, ideally one that can handle component configuration as well

Contacts: Differentiate between groups and organizations

Reported by flack on 7 Apr 1956 20:45 UTC
ATM, every group is treated as an organisation, i.e. as something that has a postal address and so on. For groups like "administrators" or "clients" or things like that, this is pretty impractical (f.x. a contact cannot really have a job title in the group "clients", the contacts widget should not show the group "clients" as if it where part of the contacts address and so on)

So every group object with the obtype ORG_OPENPSA_OBTYPE_OTHERGROUP should be ignored by the contactwidget and should also have a separate (and simpler) schema. The contacts schema should have separate fields for company (no groups with ORG_OPENPSA_OBTYPE_OTHERGROUP, multiple selection disabled) and groups (only ORG_OPENPSA_OBTYPE_OTHERGROUP, multiple selection enabled)

Provide a Basecamp-compatible web API

It would be useful if OpenPSA had a web API. Basecamp API might be a good fit, as then various clients could easily talk to OpenPSA as well.

This might be especially useful as the New Basecamp has dropped some useful features like time tracking, and OpenPSA could provide a migration option.

Replace chooser with jqueryui autocomplete-based solution

Reported by flack on 10 Feb 1918 20:00 UTC
This will allow us to jettison some hard-to-maintain JS and hopefully help to simplify the PHP part a bit. The sorting feature (if it stays) should be done by a separate widget, and in multiselect-mode the selection should be displayed separately from the autocomplete field itself the way universalchooser did it.

sales should delete empty subscription tasks

Reported by flack on 24 Aug 2035 03:55 UTC
When creating a monthly subscription, o.o.sales creates new tasks for each month and invoices the old ones. When there is nothing to invoice, it just closes the tasks. If the tasks are empty, i.e. if no hour reports are booked on them, they might as well be deleted, because they hold no information and just clog up the database.

Migrated-From: http://trac.openpsa2.org/ticket/15

Salesproject list has duplicate export button

Reported by flack on 16 Oct 1904 20:08 UTC
Salesproject lists like /sales/list/won/ return all their data twice when loaded in a UI tab on Midgard 2. The visible symptom is that there are two export buttons displayed

Switch user feature

Reported by flack on 23 Dec 1923 00:53 UTC
Since midgard 2 supports authentication stack, we can finally have a feature that allows admins to take over other people's accounts, which can be quite useful for doing user support.

For the moment, we could also just let people with the appropriate credentials switch user IDs by logging in as a different user (The password) can be read from the database. That way, they won't be able to switch back, but at least it would work on mgd1 as well.

DM2 Schema: Readonly fields are not stored

In the store function of midcom_helper_datamanager2_storage is stated (for readonly fields):
"Skip storage as we may raise exceptions if the field doesn't exist"

That might not be the correct behaviour, because if we do not want a field to be stored we could use "storage => null" in the schema. Besides that, it might be expected that the field is actually stored.

Advanced messagereport

Reported by smallone on 2 Feb 1972 14:27 UTC
Directmarketing could provide a more advanced report on whos clicking links. A bit more elaborate over whos clicking on what link.

A trendreport matching different emails against eachother and how effective each letter was.

A more alaborate report on how it went. For example between what times the emails was read on.

Migrated-From: http://trac.openpsa2.org/ticket/24

Simplified workflow for creating accounts

Reported by flack on 18 Sep 1989 04:07 UTC
ATM, if you want to create an accounts for someone, you always have to create the person first, then go to a second form and create the actual account and afterwards, you have to manually send out the password for the new account. This should be streamlined, f.x. by automatically redirecting to the create account form or by integrating a username field in the normal creation form.

Add support for Midgard2-style user management to contacts

Reported by flack on 4 Aug 1944 21:01 UTC
The contacts component's user management needs to be adapted to handle midgard2-style user management in addition to the midgard1 functionality.

Alternatively, this functionality could be moved to another place, mushing together users and contacts is a bit unfortunate anyways

Implement collector::get_linked_objects method

Reported by flack on 3 May 1997 18:01 UTC
This is already used in a number of places with local implementations (o.o.relatedto collector is an example) and should be centralized to reduce the amount of code duplication.

The functionality should be something like:

$mc->get_linked_objects($fieldname);

where fieldname is a link column. The return would be an array of objects of the respective DBA class

Campaign view broken under mgd2

Reported by flack on 26 Jan 2036 02:33 UTC
line 153 of handler/campaign/campaign.php triggers an error, because midgard_member links to midgard_person, which doesn't have an email field in mgd2.

The question is if the schema should be changed for this (which seems problematic, given that the person class is determined by a config variable) or if another solution exists which doesn't involve loading tons of unneeded stuff into memory

Notice in login form triggered from dynamic_load

Reported by flack on 17 May 1984 19:26 UTC
F.x. /dirmar/campaign/GUID as anonymous user prints this notice:

( ! ) Notice: Undefined offset: 1 in /home/sonic/Dokumente/workspace/openpsa/lib/midcom/helper/_styleloader.php on line 653

Seems like dynamic_load screws up the context handling

Can't set new cycle on expired deliverable

Reported by flack on 17 May 1950 22:36 UTC
When a deliverable's last cycle has run, no new at entry will be created, which is fine, but if you later on change the deliverable (because f.x. the contract got prolonged), no new AT entry will be created.

Also, the "next cycle" field in the deliverable's edit form is automatically hidden in this case, so that you can't create a new job entry manually, either.

At least one of those two things should be changed, because the user will be left in a dead end otherwise.

Optimize mail backend detection

Reported by flack on 22 Jan 1930 06:13 UTC
For reasons unknown, o.o.mail tries to detect the available backend every time send is called, which seems quite silly when called in loops. This should be changed to a static cache with appropriate get/set methods

Migrated-From: http://trac.openpsa2.org/ticket/48

JSON export functionality

It would be great to refactor parts of the midcom_helper_xml class to a basic exporter class (like recursively filtering out midcom specific properties like "autodelete_dependents" and "_use_rcs"). This way, the relevant logic could be reused in the implementation on a JSON exporter class.

UI for reports_hours_between

Reported by flack on 13 Jun 1974 21:44 UTC
expenses has a feature that allows you to generate a list of all hours between to arbitrary dates by entering a URL like /hours/between/date1/date2/.

There should be a simle UI for this (f.x. two datepicker widgets). Also, the code (including setting QB constraints) should be moved to a more central location (f.x. o.o.widgets) so that it can be re-used in other components (like o.o.projects task lists)

Differentiate between groups and organizations

Reported by flack on 3 Jul 1989 22:24 UTC
ATM, every group is treated as an organisation, i.e. as something that has a postal address and so on. For groups like "administrators" or "clients" or things like that, this is pretty impractical (f.x. a contact cannot really have a job title in the group "clients", the contacts widget should not show the group "clients" as if it where part of the contacts address and so on)

So every group object with the obtype ORG_OPENPSA_OBTYPE_OTHERGROUP should be ignored by the contactwidget and should also have a separate (and simpler) schema. The contacts schema should have separate fields for company (no groups with ORG_OPENPSA_OBTYPE_OTHERGROUP, multiple selection disabled) and groups (only ORG_OPENPSA_OBTYPE_OTHERGROUP, multiple selection enabled)

Support consumer customers

Reported by flack on 29 Jul 1966 17:07 UTC
So far, the basic assumption of OpenPSA is that the owner_organization is doing B2B only. So addresses f.x. for invoicing are always taken from the customer organisation. If you're doing B2C, many customers won't have an organisation (unless create one for each of them), so certain things will likely break. At least contact management and invoicing should support both private and corporate customers.

Salesproject list has duplicate export button

Reported by flack on 16 Oct 1904 20:08 UTC
Salesproject lists like /sales/list/won/ return all their data twice when loaded in a UI tab on Midgard 2. The visible symptom is that there are two export buttons displayed

cache-invalidate should redirect to previous page

Reported by flack on 22 Oct 2023 00:59 UTC
When invalidating midcom's cache from the toolbar, you always get redirected to the start page. Instead, you should be redirected to the page from which you clicked the button

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.