Joomla-Tree-menu consisting of categories and entries - plugins

I'm searching a plugin for displaying a tree-structure. The first level should be the category names and the second one the entries.
e.g.
- Australia 2012
-- Day 1 (arrival)
-- Day 2 (this and that)
- Kanada 2013
-- Day 1 (arrival)
-- Day 2 (departure)
etc.
where "Australia 2012" and "Kanada 2013" are categories and "Day X" are entries.
Is there a plugin or even a native feature for this purpose? I'm using Joomla 3.2.

there are two modules in the joomla core that might fit your purpose, but you most certainly have to override the layout of the module to make it display like you want to:
/modules/mod_articles_category
/modules/mod_articles_categories
To override the layout, look here or here (there are lots of tutorials for this).
regards Jonas

Related

RRULE for first Advent

I am currently trying to setup my own holiday iCalendar to which I can subscribe on, since I don't want to depend on 3rd party services.
I am currently trying to make the the VEVENTs for Christmas. The 2nd, 3rd and 4th advent, as well as the Christmas holidays are straight forward, however I have big issues to model the 1st advent.
Specifically, the problem is that the first advent can be in November and December (27th November to 3rd Devember)
How can I make a recurring event (or, more specifically, the RRULE) to cover all cases for the 1st advent?
What I've tried
My first idea was this:
FREQ=YEARLY;INTERVAL=1;BYMONTH=11,12;BYMONTHDAY=27,28,29,30,1,2,3;BYDAY=SU
The idea was to just pick the one Sunday in between 27th November and 3rd December. This does of course not work because BYMONTH expands the search to all days in November and December, and BYMONTHDAY limits the search to those days in both months. I.e. November 1st, November 2nd, ... December 27th, December 28th, ..., which is of course not what I want.
Next, I tried to use BYYEARDAY=331,332,333,334,335,336,337 instead of BYMONTHDAY and BYMONTH, but unfortunately my webdav server (Nextcloud, which uses Sabre as far as I know. I got an error message "Invalid BYYEARDAY rule") does not support this.
My next idea was to use multiple RRULEs -- at least I did not see any passage in the RFC stating that only one RRULE is allowed at most. So I ended up with:
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=27,28,29,30;BYMONTH=11
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=1,2,3;BYMONTH=12
Didn't work as well. My last resort was to create two separate VEVENTs, one with the first RRULE above and one with the second RRULE above, but otherwise identical. This worked, but it left me confused.
Is there no better solution? How would you do it?
unfortunately my webdav server (Nextcloud, which uses Sabre as far as I know. I got an error message "Invalid BYYEARDAY rule") does not support this.
Well I think you should raise a bug report, because as far I can tell your solutions are correct and RFC-compliant.
I tried your solutions 2 and 3 with different libs (my own lib php-rrule, and rrule.js) and both options seems to work just fine.
FREQ=YEARLY;BYDAY=SU;BYYEARDAY=331,332,333,334,335,336,337
or combining 2
FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=27,28,29,30;BYMONTH=11
FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=1,2,3;BYMONTH=12
will both produce:
2018-12-02
2019-12-01
2020-11-29
2021-11-28
2022-11-27
2023-12-03
2024-12-01
2025-11-30
2026-11-29
2027-11-28
which according to Google and Wikipedia are the correct dates for the 1st Advent Sunday in the next 10 years.
Side note
at least I did not see any passage in the RFC stating that only one RRULE is allowed at most.
While not strictly forbidden, in RFC 5545 it's literally written everytime RRULE is mentioned:
;
; The following is OPTIONAL,
; but SHOULD NOT occur more than once.
;
rrule
Appendix A even states in the "New restrictions":
2. The "RRULE" property SHOULD NOT occur more than once in a
component.
That being said, multiple RRULE is a great feature, I don't know why they restricted it.
If I'm not mistaken, the first Advent is always the fifth last Sunday in a year. So the following rule should do the trick:
FREQ=YEARLY;BYDAY=-5SU
See the next 10 results: http://recurrence-expansion-service.appspot.com/reaas?dtstart=20181202&rrule=FREQ%3DYEARLY%3BBYDAY%3D-5SU&max_instances=10
Or to put it another way:
FREQ=YEARLY;BYDAY=SU;BYSETPOS=-5

How do I search GitHub issues "created in the last seven days"?

We'd like to list all GitHub issues created in the last seven (or, n) days. This is a relative time window.
We don't want to use a specific date, because we'd like to create a link that is always correct (so we can link to the report of recent issues).
Thanks!
According to https://help.github.com/articles/searching-issues/#search-based-on-when-an-issue-or-pull-request-was-created-or-last-updated
created:2016-12-01..2016-12-08
Will output issue created during these 7 days.
You could create a bookmarklet, like I have, to for example, show your merged PRs last 7 days within a repo. Here's my bookmarklet:
javascript:document.location.href%3D%60https://github.com/calcom/cal.com/pulls%3Fq%3Dis%253Apr%2Bauthor%253Aleog%2Bis%253Aclosed%2Bmerged%253A%253E%24%7Bnew Date((new Date).setDate((new Date).getDate()-7)).toISOString().split("T")%5B0%5D%7D%60%3B

Schema.org type for a study course

I haven't been able to find any Schema.org type that fits a sheet describing the properties of a course from a university.
The HTML (without any semantic markup using Schema.org) would look more or less like this:
<section>
<h2>Fact sheet</h2>
<p><strong>Formal qualifications:</strong> Bachelor’s Degree in Design</p>
<p><strong>Credits</strong>: 240 ECTS</p>
<p><strong>Duration</strong>: 4 academic years or 240 ECTS</p>
<p><strong>School period</strong>: from October to June</p>
<p><strong>Timetable</strong>: Morning Group: from Monday to Friday from 9am to 2.30pm. Evening Group: from Monday to Friday from 3:30 pm to 9.00 pm * The college reserves the right to modify schedules.</p>
<strong>Price</strong>: 112 €/ 1 ECTS
…
</section>
I thought about using Product, but it lacks lots of things.
Any ideas?
As this thread still appears on search engines, perhaps it's better to update that a Course schema was released lately:
http://schema.org/Course
Google is also endorsing it at this moment:
https://developers.google.com/search/docs/data-types/courses (So far I haven't seen rich snippets "live" though).
I have implemented this and I have to admit that it is not exhaustive and there is still work to be done to improve it. I noticed that Coursera.org is using properties that are not released yet, so I believe that more properties will be coming soon.
For your information!
I would look into the Event part of the schema.org:
An event happening at a certain time and location, such as a concert,
lecture, or festival. Ticketing information may be added via the
'offers' property. Repeated events may be structured as separate Event
objects.
http://schema.org/Event
That seems like it should cover something like a course. (lecture)

How to make Jasper Reports programmatically determine the Name of Columns within the report it self?

I am generating a report with that will have a 7 columns where the last 6 should have the the last 6 months listed. So as of the time of this writing it should be:
NAME -> September -> August -> July -> June -> May -> April
ss the column headers. I am trying to avoid having to pass them in as parameters, and am trying to get Jasper Reports to figure it out at runtime. I can get the first month pretty easily using a Text Field Expression. It looks like:
new java.text.SimpleDateFormat("MMMMM").format(new Date())
The issue comes in with the other months. I initially tried
new java.text.SimpleDateFormat("MMMMM").format(java.util.Calendar.getInstance().add(Calendar.MONTH, new Integer("-1)).getTime())
This does not work since Calendar.add does not return a Calendar instance. I then tried using a variable and then a combination of variables which also did not work.
How to make Jasper Reports programmatically determine the Name of Columns within the report it self?
I think the best approach to solving this problem is to use Commons Lang. That package provides utilities to make calculations like this very easy. By adding one extra jar you can then use expressions like this:
DateUtils.addMonths(new Date(),-1)
I find that easier to maintain than first creating a helper Calendar class and then using the ternary operator but ignoring its results.
$P{cal}.add(Calendar.MONTH, -1)
? null : $P{cal}.getTime()
If you ever need to generalize the solution then it's a lot easier to get a Date back from a SQL query than to get a Calendar. So you can quickly change to "DateUtils.addMonths($F{MyDate},-1)". Initializing a Calendar to match a date returned by a query isn't nearly as simple. But of course there's a certain benefit to not having to add one more .jar file. So sometimes that ternary operator technique is the quickest way to get things done.
I wrote about using the Commons Lang approach a couple of years ago here: http://mdahlman.wordpress.com/2009/09/09/jasperreports-first-dates/
I also needed a certain format for the previous month. I ended up combining the other two answers:
new java.text.SimpleDateFormat("yyyyMM").format(
org.apache.commons.lang3.time.DateUtils.addMonths(
new java.util.Date(),
-6
)
)
This way I don't need to add another parameter. Adding the Commons Lang jar is a non issue for me since JasperServer 5.5 comes with version 3.0 out of the box.
I hope this helps someone who stumples upon this page, just like I did.
I found a working solution that is pretty ingenious (no I did not come up with it). I found it here. The gist of it is create a parameter called call, with a default value of:
Calendar.getInstance()
and un-check the option 'Use as a prompt'. Then in your text field expression you would do:
new java.text.SimpleDateFormat("MMMMM").format(
(
$P{cal}.add(Calendar.MONTH, -1)
? null : $P{cal}.getTime()
)
)
What happens is it will set the default value for the calendar instance, then execute the add method, which will resolve to false, so then it will then return the result from getTime() method which gets formatted how I want.

exclude time periods in iCalendar

i have a very simple vevent "every Monday 9 to 5" and some time periods where this event doesn't take place. like 7.8.2011 to 24.10.2011. What is the best way to represent this in iCalendar?
a lot of EXDATEs? special EXRULEs?
Oh dear,
Exrule is deprecated now in RFC 5545, so best skip that one (although that would be neatest and most ics s/w probably still copes with it (like mine :), for compatibility )
EXDATES are valid, but gosh that would be cumbersome if you mean the whole period from 7 August to 24 October, you'd have to enter every week day
You possibly have to just create two events - although one could 'relate' them.
I have not tried it yet, have been thinking about if for a different reason, but there is the concept of 'RELATED-TO' with modifer RELTYPE (PARENT, SIBLING etc)
RELATED-TO;RELTYPE=SIBLING:19960401-080045-4000F192713#
example.com
Property Name: RELATED-TO
Purpose: This property is used to represent a relationship or
reference between one calendar component and another.
Value Type: TEXT
Property Parameters: IANA, non-standard, and relationship type
property parameters can be specified on this property.
Conformance: This property can be specified in the "VEVENT",
"VTODO", and "VJOURNAL" calendar components.
Description: The property value consists of the persistent, globally
unique identifier of another calendar component. This value would
be represented in a calendar component by the "UID" property.