reside as well) and make it static
- refactor out the code from getProjects that determines which projects
are visible by a user and use the same code to restrict the count that
we calculate for all available project tags
- calculating the project stats is now no longer O(5n) but simply O(5)
when it comes to SQL queries (where n is the number of filtered projects);
remove the member statistic since it makes no sense in this context
forge's admin area that is displayed instead of the default project list.
Sanitize the URLs that we're using and make a redirect to the listProjects
page when no custom forge page is enabled.
rendering for resources and resource revisions (this is needed later
on for the taxonomy).
Directly link to individual resource / page revisions from the timeline
as well.
its a many-to-many. We store project tags in IDF_Tag with a project
id "0" (this has minimal to no impact on existing code) and therefor
only need to ensure that the new relation table exists in the migration.
Then just the project summary configuration and the admin's project
create and project update forms and views needed to be adapted to
be able to render, create and update project tags.
it actually belongs. Add an option to download a specific resource
revision as attachment in the view. Fix a bug that occurred when
displaying an old revision of a resource. Prepare for proper
deletion of the original file and the connected resource in case
a revision is deleted; mark any previous revision as head in this
case. Left-align the summary label in the resource list view.
resource, such as its summary, its mime type, a preview (available
for some image/* and text/* mime types) and a list of pages where
the specific resource revision is used.
$name was overwritten. So, this was fixed by adding a special
functionality when archive files are uploaded that replace existing
files with equal names; these are now deleted. This is docuemented
more clearly in the FAQ and it is also documented now that files
in the archive that are not listed in the manifest are not extracted.
- for object changes in each tab / section we send out notifications to
project owners, members and / or additional addresses (all this is
configurable) (fixes issues 334, 452, 480 and possible others)
- one can now also receive notifications about download updates
- the notification template that informs about issue updates is no
longer confusing the reader with the "a new issue has been created
and assigned to you" phrase if the user who is notified is not
actually the (new) owner (fixes issue 562)
- send-out notification emails for reviews, wiki updates and review
updates are now linked via a unique message id to support a threaded
view in email clients like Thunderbird (this was previously only
implemented for issue notifications for issue 414)
This commit has been sponsored by SciLab.
each section and reword the help texts quite a bit. This will
later be used to collect the correct set of email addresses to
notify a particular audience about changes in a particular section.
Notice that a project admin will have to explicitely opt-in for
"Others" notifications, i.e. unless the checkbox is checked, existing
email addresses won't be notified anymore. This is surely debatable
for existing setups, but makes much more sense for new setups.
Eventually we'll write a small migration script to add the specific
enabled setting for those (existing) projects that have a non-empty
mail list configured.
This commit has been sponsored by SciLab.
add a new view and plain form to upload an archive; rename the internal
URLs, handlers and templates from submit to create for single downloads
and also add a help section about the new format as well as a detailed
FAQ entry. Archive files get a bigger upload limit (default: 20MB).
Next up: archive uploading, validation and processing.
just before the search input field. Also rename "Open Issues" to
"All Issues" (since one can view both, open and closed issues under
this view, just like in every other issue list view we have) and
mark "All Issues" as active if we filter by label.