TP-Docs
HTML5 Icon HTML5 Icon HTML5 Icon
TP on Social Media

Recent

Welcome to TinyPortal. Please login or sign up.

April 18, 2024, 01:25:46 AM

Login with username, password and session length
Members
  • Total Members: 3,885
  • Latest: Growner
Stats
  • Total Posts: 195,164
  • Total Topics: 21,219
  • Online today: 180
  • Online ever: 3,540 (September 03, 2022, 01:38:54 AM)
Users Online
  • Users: 0
  • Guests: 167
  • Total: 167

Einige Frage zu TP 2.1.x

Started by AmaSha, January 06, 2022, 10:38:37 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

@rjen

Try my code in a PHP block..

Note: the functions uses the maximum number of days for the board index: events will only show up within this range.

Check your setting for:
"Max days in advance on board index"

global $scripturl, $smcFunc;

$now = time();
$today = date('j',$now);
$year = date("Y",$now);
$month = date("n",$now);
$days = array($today => array(NULL, NULL, '<a class="smalltext" style="color: steelblue; font-weight: bold; border: solid 1px black; background-color: white;" href="'.$scripturl.'?action=calendar;sa=view;month='.$month.';year='.$year.';day='.$today.'" target="_self">'.$today.'</a>'));

$day_name_length = 2;
$month_href = $scripturl . '?action=calendar';
$first_day = 1;
$pn = array();

$first_of_month = gmmktime(0,0,0,$month,1,$year);
//remember that mktime will automatically correct if invalid dates are entered
// for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
// this provides a built in "rounding" feature to generate_calendar()

$day_names = array(); //generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) //January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); //%A means full textual day name

list($month, $year, $month_name, $weekday) = explode(',', gmstrftime('%m,%Y,%B,%w', $first_of_month));
$weekday = ($weekday + 7 - $first_day) % 7; //adjust for $first_day
$title   = $smcFunc['htmlspecialchars'](ucfirst($month_name)).' '.$year;  //note that some locales don't capitalize month and day names

//Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03
@list($p, $pl) = each($pn);
@list($n, $nl) = each($pn); //previous and next links, if applicable
if($p)
$p = '<span class="smalltext">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span> ';
if($n)
$n = ' <span class="smalltext">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>';
$calendar = '<table>'."\n".
'<caption >'.$p.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).$n."</caption>\n<tr>";

if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
//if day_name_length is >3, the full name of the day will be printed
foreach($day_names as $d)
$calendar .= '<th class="smalltext" abbr="'.htmlentities($d).'" style="padding: 4px 2px;">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';

$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}

if($weekday > 0)
$calendar .= '<td class="smalltext" colspan="'.$weekday.'"> </td>'; //initial 'empty' days
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
if($weekday == 7){
$weekday   = 0; #start a new week
$calendar .= "</tr>\n<tr style=\"text-align:right;\">";
}
if(isset($days[$day]) and is_array($days[$day])){
@list($link, $classes, $content) = $days[$day];
if(is_null($content)) 
$content  = $day;
$calendar .= '<td '.($classes ? ' class="'.htmlspecialchars($classes).'" style="padding:1px 6px 1px 1px;">' : ' style="padding:1px 6px 1px 1px;">').
($link ? '<a href="'.htmlspecialchars($link).'?">'.$content.'</a>' : $content).'</td>';
}
else
{
$calendar .= "<td class=\"smalltext\" style=\"padding:1px 5px 1px 4px;font-size: 0.85em;\"><a";
if(((($weekday+$first_day) % 7)==0)||((($weekday+$first_day) % 7)==6))
{
$calendar .= ' style="color:#C00000;"';
}
$calendar .= " href=\"".$scripturl."?action=calendar;sa=view;month=".$month.";year=".$year.";day=".$day."\" target=\"_self\">$day</a></td>";
}
}
if($weekday != 7)
$calendar .= '<td class="smalltext" colspan="'.(7-$weekday).'"> </td>'; //remaining "empty" days

echo $calendar."</tr>\n</table>\n";

echo '<br/>';
$result = ssi_todaysEvents('array');

if (!empty($result))
{
   echo '<div class="smalltext"><b>Upcoming events:</b></div>';
   echo '<div class="supersmalltext">';
   foreach ($result as $event)
      {
      $temp = explode('-', $event['date']);
      $event['date'] = $temp[2] . '-' . $temp[1] . '-' . $temp[0];
    echo '<a href="' . $event['href'] . '">' . $event['date'] . ' : ' . $event['title'] . '</a><br />';
      }
   echo '</div>';
}
else
{
      echo '<div class="supersmalltext">There are no upcoming events.<br /><br /></div>';
  }
Running Latest TP on SMF2.1 at: www.fjr-club.nl

AmaSha

Hi.

Sorry for the very late reply but I had several appointments with different doctors which made it impossible for me to reply earlier.

First of all, thanks for the code. I put it in the forum as a test and it looks pretty good.

Allow me two comments:

1. Due to the additional calendar, the whole thing looks very bulky, maybe even a bit too big (see IMG_1).

2. There is an appointment (IMG_2) in the SMF calendar for tomorrow (01/28/2022), but it is not (yet) displayed in the small calendar (IMG_3). How can I influence the fact that the appointments are already displayed seven days in advance?

Thanks in advance.

Thomas

@rjen

Quote from: @rjen on January 21, 2022, 08:00:20 AM
Note: the functions uses the maximum number of days for the board index: events will only show up within this range.

Check your setting for:
"Max days in advance on board index"


What did you set?
Running Latest TP on SMF2.1 at: www.fjr-club.nl

AmaSha

Hi @arjen.

This is set to 7 days.

Today it also doesn't show our fourm's tenth birthday. The mini-calender says still "There are no upcoming events." But the date is set to the SMF-calender...
??? ??? ???

@rjen

Can you share a link to you forum?
Running Latest TP on SMF2.1 at: www.fjr-club.nl

AmaSha


@rjen

This would be a good explanation...

This block uses standard a SMF SSI function. This means that the users need to be able to see the calendar in order to see the event...

Check the permissions for the users to see the calendar...

Running Latest TP on SMF2.1 at: www.fjr-club.nl

AmaSha

Ah, sorry.

You were in the wrong group - the calender is available after 5 posts.

You may try it again, nwo with 100 posts...
;-)

@rjen

I see the calendar now, but I cannot see why it does not work.

The blockcode works fine for me, so I would need to check the block itself and the settings in you forum to get to an explanation...

To do that I would need admin access.
Running Latest TP on SMF2.1 at: www.fjr-club.nl

AmaSha