Workbook Schedule – Compact Style with Assignments

This article is an enhancement to the post found here. You need to have Meeting Schedule Assistant version 18.0.9 or higher installed.

Compact – Click to Enlarge

What Is Different?

This version of the schedule makes use of the new Duty Assignment History feature in Meeting Schedule Assistant. The link just provided gives you detailed information about how you can use this new information in your Midweek Schedules and thus combine assignments from both editors onto a single schedule.

Including Assignments – Click to Enlarge

In-fact, for those brave enough, there is nothing stopping you from using the Custom tab in the Midweek Editor to show a dedicated assignments schedule (beyond the tabular style imposed by the Sound Rota Editor).

Understandably we can only provide you with an example of what you can display on your schedule. Everyone will have unique situations and the script may well have to be tweaked to suit your scenario.

What You Need To Know

So, Duty Assignment History is a new concept introduced in Meeting Schedule Assistant version 18.0.9. The history is built up over time when you create your Sound Rota (SRR) schedules and save them. Each time you will be shown this prompt:

Update Assignment History Prompt

If you have made all the needed changes to your schedule then click Yes to the prompt. This will update the history file. You can always open your schedule again and make further changes and update the history again as many times as needed.

Note: You might try to open your existing SRR documents (created with version 18.0.8 or earlier) and save them to get your history up to date but this might not produce the desired results. This is because the older SRR documents are lacking some information for us to correctly manage the duty history. You are welcome to try and use this approach but you may well have to edit your history file and make some adjustments to get it correct. It is suggested that you simply re-create any existing SRR file again and save it to get your history up to date.

How Does Duty Assignment History Help Me?

This is a good question! It helps you in three specific ways:

1. Automatic Assigning

Auto Assign Settings – Click to Enlarge

On the Auto Assign Settings window there is an option Select starting names. When this option is on the program will show you a popup window to select starting names during the automatic assigning process:

Select Starting names – Click to Enlarge

This is where the Duty Assignment History is useful! Single click on the drop list for any assignment and you will see a list of history on the right. Use this information to help you decide who you want to select as a starting name from the drop list.

Thus, you should be able to avoid assigning brothers back to back with the end of the last schedule which is always appreciated.

2. Single Column

The Single Column feature is a powerful alternative that can be used instead of, or in conjuction with automatic assigning. The help topic provides full details.

Single Column – Click to Enlarge

As you can see, the Duty Assignment History is now listed here too, on a column by column basis. The list includes the most recent date that each name was used (if at all). Just click on a name to select it as the starting name.

3. Including Assignment Information on Midweek Schedules

It is beyond the scope of this blog post to describe how to include the Duty Assignment History. The link already provided (also included in the Help System with the program) provides all the information you need to understand how the history data file works.

However, we decided to extend the Compact Schedule script that was initially released back in November 2017. This edition includes the following assignments at the bottom of the schedule:

  • Sound
  • Platform
  • Microphone
  • Cleaning (see note)

Note: Cleaning is a custom assignment and as a result the Index used might be different in your configuration. The dedicated help topic provides more information about this.

The samples provided here assume that you are using the default schedule template. I think this most likely applies to most users. It is also provided in two versions (in both English and Hungarian):

  • Midweek
  • Weekly

Choose the schedule that matches the report mode you are using in the program.

English Version

Workbook Compact With Assignments English
Size: 13kb
Version: 5

Hungarian Version

Workbook Compact With Assignments Hungarian
Size: 13kb
Version: 5

Workbook Schedule – Compact Style

A brother showed me a schedule that they were using in his congregation. It was a compact schedule that fitted everything on one piece of paper.

This schedule does not include the following:

  • None of the themes
  • None the song details
  • None of the prayer assignments (see version 2 or 3)
  • None of the student assistants

In addition, this schedule is designed for congregations who do not have a second class.

Compact Style Sheet Example

It should be noted that a few of the headings used on the schedule are in English and if you want to use the schedule in another language you will have to edit a copy of the script and adjust the text as needed. For example:

72
73
74
75
<!--Heading-->

&gt; Treasures From God's Word
cellTFGW

How To Install

Step 1:

Click the Import button

Step 2:

Select the CSS/XSL files and click Open.

The new schedule will now show in the droplist.

Workbook-S-140-Compact
Size: 6kb

Update

There is now a second version of the script available which also includes opening / closing prayer assignments.

Workbook-S-140-Compact-v2
Size: 6kb

Update

There is now a third version of the script available which includes improvements for when you have more than one school. It still shows only the students from the main hall but there were some issues with the display. This is resolved in version 3. Please be aware you need to install Meeting Schedule Assistant v18.0.8 or higher to use this script.

Workbook-S-140-Compact-v3
Size: 6kb
Version: v3

Please leave a comment if you have decided to use either of these schedules and would like support with any issues.

Why can’t I see any students?

Frequently Asked Questions

– Why Can’t I See Any Students?

This is a question that I get asked quite frequently. In this article I attempt to explain why it happens and what you need to do.

Why It Happens

Revision History 17.0.9
Back in February 2017 we released version 17.0.9.

This edition introduced a brand new Publishers Database.

To get your students to be visible again you must follow this procedure:

What You Need To Do

Menu Item

Step 1


  • Click on the Options menu.

  • Next, click on the Publishers Database menu item.

Upgrade Database

Step 2


The Publishers Database window gets displayed.

  • Click on the Database menu.

  • Now click on Upgrade Database.



The software application will now attempt to read all the various locations that publishers and students were held in the program and consolidate them into the new database.

You need to verify the upgraded database to ensure everything imported correctly. From now on you need to manage all publishers from this new window.

Midweek Editor and Hot Keys

The Midweek Editor supports several hotkeys. I have now changed how the hotkeys are implemented.

F5Refresh the view.
F6Download schedule information.
F7
Used by monthly volunteers.
CONTROL + F7Used by monthly volunteers.
CONTROL + GUpdate Google Calendar.
CONTROL + SSave schedule.
CONTROL + SHIFT + IImport student information from Life and Ministry Meeting Overseer.
CONTROL + SHIFT + TEdit the meeting times.
CONTROL + SHIFT + UUpdate Weekend Meeting time.
CONTROL + SHIFT + WEdit Weekend Meeting information.
CONTROL + SHIFT + XExport student information to Coordinator of the Body of Elders.
CONTROL + 0Zoom the view to 100%.
CONTROL + +Zoom in the view.
CONTROL + -Zoom out the view.

You might see a popup message like this when you start the editor:

Hotkey warning

In my personal experience I only encounter this problem when I have Hypersnap running (a screen capture program). With respects to Hypersnap, you can re-configure the conflicting hotkeys.

There are two more special key presses:

  • CONTROL + I will wrap any highlighted text with Italic HTML tags.
  • CONTROL + B will wrap any highlighted text with Bold HTML tags.

But, the above two are registered differently.

Changes to the Midweek Editor from January 2018

January 2018 Workbook

January 2018 Workbook (click to enlarge)
The January 2018 workbook, available from the www.jw.org website has a few changes to the structure of the student assignments.

Changes need to be made to Meeting Schedule Assistant.

Student Assignment Types

Sample Drop List
We have added several new student items to the droplist. This includes three additional Video assignments.

These are not actually student assignments. Rather, they are Sample Conversation Videos which the Chairman (or possibly the Auxiliary Classroom Counsellor) discusses with the audience.

If you are using F6 to download the schedule data then you will have the right types of assignments specified by the volunteers.
Students (Click to enlarge)
I have changed the window to display a drop list for the assignment that is a sample video.

Now you can specify if the Chairman discusses the video with everyone or if the Auxiliary Classroom Counsellor will oversee the item in his classroom with a suitable mobile device.

The S-140 schedule scripts have been modified to display this new information. However, I still have to review the older Workbook scripts.

Duration / Sample Conversation Videos

Student Material (click to enlarge)
You will see that the times for each student item no longer follow a fixed pattern of 2, 4 and 6 minutes. It can vary from 2 to 6 minutes. As a result, we have introduced new time options on the Student Material window.

As previously mentioned, there are three types of sample conversation videos each month. These are discussed by the Chairman (or maybe the Auxiliary Classroom Counsellor).

S-89 Assignment Slip

S-89 (click to enlarge)
The S-89 has been revised to include the new student items.

A few languages have been implemented but I am still waiting for other languages to become available.

S-140 Workbook Script Adjustments

Who discusses sample videos (Click to enlarge)

If you look closely at the official workbook for January you will see that all sample conversation videos are for a fixed amount of time. They do not follow the rule xx min. or less. In addition, we have to indicate who is discussing the sample video with the audience (Chairman or Auxiliary Classroom Counsellor). In addition, we don’t need to display the Student/Assistant labels when we are discussing a sample conversation video. For this, changes are required in your script.

All these changes have been implemented on all default S-140 schedules and the good news is that no changes are required on your part. That is, unless you are using a customized S-140 script. In this situation you will need to replicate the new changes to your scripts:

The first change is to exclude the Student / Assistant labels:

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
<xsl:template match="StudentItem">
  <tr>
    <xsl:apply-templates select="Time" mode="End"/>
    <td class="cellTheme">
      <span class="bulletAYFM">&#8226;</span>
      <span class="textTheme">
        <xsl:value-of select="Type"/>
      </span>
      <xsl:apply-templates select="Time" mode="Duration"/>
      <xsl:apply-templates select="Material"/>
    </td>
    <td class="cellPosition">
      <xsl:choose>
        <xsl:when test="@IsSampleVideo=1">
          <!--We need an empty cell-->
          <xsl:text> </xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="//Labels/Student"/>
          <xsl:if test="@IsTalk=0">
            <br/>
            <xsl:value-of select="//Labels/Assistant"/>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <xsl:apply-templates select="Students"/>
  </tr>
</xsl:template>

The second change is to display who is discussing the video with the audience:

355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<xsl:template match="Students">
<td class="cellName">
  <xsl:choose>
    <xsl:when test="../@IsSampleVideo=1">
      <xsl:choose>
        <xsl:when test="@ChairmanHandleSampleVideo=0">
          <xsl:value-of select="//Labels/Counsellor"/>
        </xsl:when>
        <xsl:otherwise>
          <!--Trims the " :" from the end of the chairman label-->
          <xsl:value-of select="normalize-space(translate(//Labels/Chairman,':',''))"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:when>
    <xsl:otherwise>
      <xsl:choose>
        <xsl:when test="Student/@Duplicate=1">
          <span class="textDuplicate">
            <xsl:value-of select="Student"/>
          </span>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="Student"/>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:if test="../@IsTalk=0">
        <br/>
        <xsl:choose>
          <xsl:when test="Assistant/@Duplicate=1">
            <span class="textDuplicate">
              <xsl:value-of select="Assistant"/>
            </span>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="Assistant"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>
    </xsl:otherwise>
  </xsl:choose>
</td>
</xsl:template>

Old style Workbook Script Adjustments

Please understand that it is not my intention to maintain support for the older workbook style scripts. I developed the original scripts whilst learning about the concept of XSL transformations. As a result, the script I ended up with was very complex. It got the job done, but in a very complicated manner. Thus, when I had to create the S-140 workbook scripts I rewrote it from scratch. I used the new concepts that I had now grasped and produced a much more efficient script that was easier to maintain.

Therefore, it is not my intention to continue support the original style scripts. For the time being they will remain available, and for the benefit of existing users I have updated the scripts. No further changes are required on your part if you are using the installed scripts. But if you have made customizations then you need to update with the following code:

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
<!--Apply Yourself To The Field Ministry-->
<xsl:template name = "Display_AYTFM" >
<xsl:param name = "strThemeClass" />
<xsl:param name = "strColSpanAYTFMClass" />
<xsl:param name = "iColSpanAYTFMCell" />
<div class="containerAYFM">
  <table cellpadding="2" cellspacing="0"  class="tableOuter">
    <tr>
      <td class="{$strColSpanAYTFMClass}" colspan="{$iColSpanAYTFMCell}">
        <div class="textAYFM">
          <xsl:value-of select="//Labels/ApplyYourselfToTheFieldMinistry"/>
        </div>
      </td>

      <!--Class headings-->
      <!--TODO: Rename these classes-->
      <xsl:if test="FirstWeekOfMonth=0">
        <xsl:if test="NumberClasses&gt;=2">
          <td class="cellAYFMMainHall" >
            <xsl:value-of select="//Labels/MainHall"/>
          </td>
          <td class="cellAYFMAuxClass1" >
            <xsl:value-of select="//Labels/AuxClass1"/>
          </td>
          <xsl:if test="NumberClasses=3">
            <td class="cellAYFMAuxClass2" >
              <xsl:value-of select="//Labels/AuxClass2"/>
            </td>
          </xsl:if>
        </xsl:if>
      </xsl:if>
    </tr>

    <!--Presentations-->
    <xsl:if test="FirstWeekOfMonth=1">
      <tr>
        <td class="borderDotTime">
          <xsl:value-of select="Presentations/Time"/>
        </td>
        <td class="borderDotTheme">
          <xsl:value-of select="Presentations/Theme" disable-output-escaping="yes"/>
          <br />
          <span class="textMethod">
            [<xsl:value-of select="Presentations/Method" disable-output-escaping="yes"/>]
          </span>
        </td>
        <td class="borderDotName">
          <xsl:value-of select="Presentations/Name"/>&#160;
        </td>
      </tr>
    </xsl:if>

    <!--Student talks-->
    <xsl:if test="FirstWeekOfMonth=0">
      <!--First student talk-->
      <tr>
        <td class="borderDotTime">
          <xsl:value-of select="StudentTalk1Time"/>
        </td>
        <td class="{$strThemeClass}">
          <xsl:value-of select="StudentSourceMaterial/StudentTalk1Type"/>
          <br />
          <span class="textMaterial">
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk1Material" disable-output-escaping="yes"/>]
          </span>
        </td>
        <td class="borderDotName">
          <xsl:choose>
            <xsl:when test="StudentSourceMaterial/StudentTalk1Type/@IsSampleVideo=1">
              <xsl:choose>
                <xsl:when test="StudentTalk1M/@ChairmanHandleSampleVideo=0">
                  <xsl:value-of select="//Labels/Counsellor"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="//Labels/Chairman"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="StudentTalk1M"/>
              <br />
              <xsl:value-of select="StudentTalk1MA"/>
            </xsl:otherwise>
          </xsl:choose>
        </td>
        <xsl:if test="NumberClasses&gt;=2">
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk1Type/@IsSampleVideo=1">
                <xsl:choose>
                  <xsl:when test="StudentTalk11/@ChairmanHandleSampleVideo=0">
                    <xsl:value-of select="//Labels/Counsellor"/>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:value-of select="//Labels/Chairman"/>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="StudentTalk11"/>
                <br />
                <xsl:value-of select="StudentTalk11A"/>
              </xsl:otherwise>
            </xsl:choose>
          </td>
          <xsl:if test="NumberClasses=3">
            <td class="borderDotName">
              <xsl:choose>
                <xsl:when test="StudentSourceMaterial/StudentTalk1Type/@IsSampleVideo=1">
                  <xsl:choose>
                    <xsl:when test="StudentTalk12/@ChairmanHandleSampleVideo=0">
                      <xsl:value-of select="//Labels/Counsellor"/>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:value-of select="//Labels/Chairman"/>
                    </xsl:otherwise>
                  </xsl:choose>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="StudentTalk12"/>
                  <br />
                  <xsl:value-of select="StudentTalk12A"/>
                </xsl:otherwise>
              </xsl:choose>
            </td>
          </xsl:if>
        </xsl:if>
      </tr>

      <!--Second student talk-->
      <tr>
        <td class="borderDotTime">
          <xsl:value-of select="StudentTalk2Time"/>
        </td>
        <td class="{$strThemeClass}">
          <xsl:value-of select="StudentSourceMaterial/StudentTalk2Type"/>
          <br />
          <span class="textMaterial">
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk2Material" disable-output-escaping="yes"/>]
          </span>
        </td>
        <td class="borderDotName">
          <xsl:choose>
            <xsl:when test="StudentSourceMaterial/StudentTalk2Type/@IsSampleVideo=1">
              <xsl:choose>
                <xsl:when test="StudentTalk2M/@ChairmanHandleSampleVideo=0">
                  <xsl:value-of select="//Labels/Counsellor"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="//Labels/Chairman"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="StudentTalk2M"/>
              <br />
              <xsl:value-of select="StudentTalk2MA"/>
            </xsl:otherwise>
          </xsl:choose>
        </td>
        <xsl:if test="NumberClasses&gt;=2">
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk2Type/@IsSampleVideo=1">
                <xsl:choose>
                  <xsl:when test="StudentTalk21/@ChairmanHandleSampleVideo=0">
                    <xsl:value-of select="//Labels/Counsellor"/>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:value-of select="//Labels/Chairman"/>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="StudentTalk21"/>
                <br />
                <xsl:value-of select="StudentTalk21A"/>
              </xsl:otherwise>
            </xsl:choose>
          </td>
          <xsl:if test="NumberClasses=3">
            <td class="borderDotName">
              <xsl:choose>
                <xsl:when test="StudentSourceMaterial/StudentTalk2Type/@IsSampleVideo=1">
                  <xsl:choose>
                    <xsl:when test="StudentTalk22/@ChairmanHandleSampleVideo=0">
                      <xsl:value-of select="//Labels/Counsellor"/>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:value-of select="//Labels/Chairman"/>
                    </xsl:otherwise>
                  </xsl:choose>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="StudentTalk22"/>
                  <br />
                  <xsl:value-of select="StudentTalk22A"/>
                </xsl:otherwise>
              </xsl:choose>
            </td>
          </xsl:if>
        </xsl:if>
      </tr>

      <!--Third student talk-->
      <tr>
        <td class="borderDotTime">
          <xsl:value-of select="StudentTalk3Time"/>
        </td>
        <td class="{$strThemeClass}">
          <xsl:value-of select="StudentSourceMaterial/StudentTalk3Type"/>
          <br />
          <span class="textMaterial">
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk3Material" disable-output-escaping="yes"/>]
          </span>
        </td>
        <td class="borderDotName">
          <xsl:choose>
            <xsl:when test="StudentSourceMaterial/StudentTalk3Type/@IsSampleVideo=1">
              <xsl:choose>
                <xsl:when test="StudentTalk3M/@ChairmanHandleSampleVideo=0">
                  <xsl:value-of select="//Labels/Counsellor"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="//Labels/Chairman"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="StudentTalk3M"/>
              <xsl:if test="StudentSourceMaterial/StudentTalk3Type/@IsTalk=0">
                <br />
                <xsl:value-of select="StudentTalk3MA"/>
              </xsl:if>
            </xsl:otherwise>
          </xsl:choose>
        </td>
        <xsl:if test="NumberClasses&gt;=2">
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk3Type/@IsSampleVideo=1">
                <xsl:choose>
                  <xsl:when test="StudentTalk31/@ChairmanHandleSampleVideo=0">
                    <xsl:value-of select="//Labels/Counsellor"/>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:value-of select="//Labels/Chairman"/>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="StudentTalk31"/>
                <xsl:if test="StudentSourceMaterial/StudentTalk3Type/@IsTalk=0">
                  <br />
                  <xsl:value-of select="StudentTalk31A"/>
                </xsl:if>
              </xsl:otherwise>
            </xsl:choose>
          </td>
          <xsl:if test="NumberClasses=3">
            <td class="borderDotName">
              <xsl:choose>
                <xsl:when test="StudentSourceMaterial/StudentTalk3Type/@IsSampleVideo=1">
                  <xsl:choose>
                    <xsl:when test="StudentTalk32/@ChairmanHandleSampleVideo=0">
                      <xsl:value-of select="//Labels/Counsellor"/>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:value-of select="//Labels/Chairman"/>
                    </xsl:otherwise>
                  </xsl:choose>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="StudentTalk32"/>
                  <xsl:if test="StudentSourceMaterial/StudentTalk3Type/@IsTalk=0">
                    <br />
                    <xsl:value-of select="StudentTalk32A"/>
                  </xsl:if>
                </xsl:otherwise>
              </xsl:choose>
            </td>
          </xsl:if>
        </xsl:if>
      </tr>
    </xsl:if>
  </table>
</div>
</xsl:template>

Worksheet Script Adjustments

Sadly, from my perspective, the worksheet scripts provided with the program are based on the legacy workbook scripts. As a result they too are somewhat over-complicated to maintain. I have made the required changes to all default worksheet scripts. If you have customized the script then you need to replicate these code changes:

297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
<!--Apply Yourself To The Field Ministry-->
<xsl:template name = "Display_AYTFM" >
<xsl:param name = "Class" />
<div class="containerAYFM">
  <table cellpadding="2" cellspacing="0"  class="tableOuter">
    <tr>
      <td class="textAYFM" colspan="4">
        <xsl:value-of select="//Labels/ApplyYourselfToTheFieldMinistry"/>
      </td>
    </tr>

    <xsl:choose>
      <!--Presentations-->
      <xsl:when test="FirstWeekOfMonth=1">
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="Presentations/Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="Presentations/Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="Presentations/Theme" disable-output-escaping="yes"/>
            <br />
            <span class="textMethod">
              [<xsl:value-of select="Presentations/Method" disable-output-escaping="yes"/>]
            </span>
          </td>
          <td class="borderDotName">
            <xsl:value-of select="Presentations/Name"/>&#160;
          </td>
        </tr>
      </xsl:when>
      <!--Student talks-->
      <xsl:otherwise>
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="StudentTalk1Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="StudentTalk1Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="StudentSourceMaterial/StudentTalk1Type"/>
            <br />
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk1Material" disable-output-escaping="yes"/>]
            <xsl:if test="StudentSourceMaterial/StudentTalk1Type/@IsSampleVideo != 1">
              <br />
              <xsl:value-of select="//Labels/CounselPoint"/>&#160;
              <xsl:choose>
                <xsl:when test="$Class='M'">
                  <xsl:value-of select="StudentTalk1M/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk1M/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='1'">
                  <xsl:value-of select="StudentTalk11/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk11/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='2'">
                  <xsl:value-of select="StudentTalk12/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk12/@StudyPointDescription"/>
                </xsl:when>
              </xsl:choose>
              <br />
            </xsl:if>
          </td>
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk1Type/@IsSampleVideo = 1">
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk1M/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk11/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk12/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:value-of select="StudentTalk1M"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:value-of select="StudentTalk11"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:value-of select="StudentTalk12"/>&#160;
                  </xsl:when>
                </xsl:choose>
                <br />
                <br />
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:value-of select="StudentTalk1MA"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:value-of select="StudentTalk11A"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:value-of select="StudentTalk12A"/>&#160;
                  </xsl:when>
                </xsl:choose>
              </xsl:otherwise>
            </xsl:choose>
          </td>
        </tr>
        <tr>
          <td class="cellComments" colspan="4">
            <br />
            <br />
            <br />
          </td>
        </tr>
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="StudentTalk2Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="StudentTalk2Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="StudentSourceMaterial/StudentTalk2Type"/><br />
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk2Material" disable-output-escaping="yes"/>]
            <xsl:if test="StudentSourceMaterial/StudentTalk2Type/@IsSampleVideo != 1">
              <br />
              <xsl:value-of select="//Labels/CounselPoint"/>&#160;
              <xsl:choose>
                <xsl:when test="$Class='M'">
                  <xsl:value-of select="StudentTalk2M/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk2M/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='1'">
                  <xsl:value-of select="StudentTalk21/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk21/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='2'">
                  <xsl:value-of select="StudentTalk22/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk22/@StudyPointDescription"/>
                </xsl:when>
              </xsl:choose>
              <br />
            </xsl:if>
            <br />
          </td>
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk2Type/@IsSampleVideo = 1">
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk2M/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk21/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk22/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:value-of select="StudentTalk2M"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:value-of select="StudentTalk21"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:value-of select="StudentTalk22"/>&#160;
                  </xsl:when>
                </xsl:choose>
                <br />
                <br />
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:value-of select="StudentTalk2MA"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:value-of select="StudentTalk21A"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:value-of select="StudentTalk22A"/>&#160;
                  </xsl:when>
                </xsl:choose>
              </xsl:otherwise>
            </xsl:choose>
          </td>
        </tr>
        <tr>
          <td class="cellComments" colspan="4">
            <br />
            <br />
            <br />
          </td>
        </tr>
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="StudentTalk3Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="StudentTalk3Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="StudentSourceMaterial/StudentTalk3Type"/><br />
            [<xsl:value-of select="StudentSourceMaterial/StudentTalk3Material" disable-output-escaping="yes"/>]
            <xsl:if test="StudentSourceMaterial/StudentTalk3Type/@IsSampleVideo != 1">
              <br/>
              <xsl:value-of select="//Labels/CounselPoint"/>&#160;
              <xsl:choose>
                <xsl:when test="$Class='M'">
                  <xsl:value-of select="StudentTalk3M/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk3M/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='1'">
                  <xsl:value-of select="StudentTalk31/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk31/@StudyPointDescription"/>
                </xsl:when>
                <xsl:when test="$Class='2'">
                  <xsl:value-of select="StudentTalk32/@StudyPoint"/>&#160;
                  <xsl:value-of select="StudentTalk32/@StudyPointDescription"/>
                </xsl:when>
              </xsl:choose>
              <br />
            </xsl:if>
          </td>
          <td class="borderDotName">
            <xsl:choose>
              <xsl:when test="StudentSourceMaterial/StudentTalk3Type/@IsSampleVideo = 1">
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk3M/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk31/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:choose>
                      <xsl:when test="StudentTalk32/@ChairmanHandleSampleVideo=0">
                        <xsl:value-of select="//Labels/Counsellor"/>
                      </xsl:when>
                      <xsl:otherwise>
                        <xsl:value-of select="//Labels/Chairman"/>
                      </xsl:otherwise>
                    </xsl:choose>
                  </xsl:when>
                </xsl:choose>
              </xsl:when>
              <xsl:otherwise>
                <xsl:choose>
                  <xsl:when test="$Class='M'">
                    <xsl:value-of select="StudentTalk3M"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='1'">
                    <xsl:value-of select="StudentTalk31"/>&#160;
                  </xsl:when>
                  <xsl:when test="$Class='2'">
                    <xsl:value-of select="StudentTalk32"/>&#160;
                  </xsl:when>
                </xsl:choose>
                <xsl:if test="StudentSourceMaterial/StudentTalk3Type/@IsTalk=0">
                  <br />
                  <br />
                  <xsl:choose>
                    <xsl:when test="$Class='M'">
                      <xsl:value-of select="StudentTalk3MA"/>&#160;
                    </xsl:when>
                    <xsl:when test="$Class='1'">
                      <xsl:value-of select="StudentTalk31A"/>&#160;
                    </xsl:when>
                    <xsl:when test="$Class='2'">
                      <xsl:value-of select="StudentTalk32A"/>&#160;
                    </xsl:when>
                  </xsl:choose>
                </xsl:if>
              </xsl:otherwise>
            </xsl:choose>
          </td>
        </tr>
        <tr>
          <td class="cellComments" colspan="4">
            <br />
            <br />
            <br />
          </td>
        </tr>

      </xsl:otherwise>
    </xsl:choose>
  </table>
</div>
</xsl:template>

Current Development Status

I will try to keep this up to date for you. It indicates which languages that I am still awaiting translations / s-89 template information etc. for.

Progress-2018-v32

Demonstration/ Student Assignment Selector Window now provides more feedback

The Lookup column on the Demonstration/ Student Assignment Selector has been improved:

Student Picker

In a version 17.2.5 the Lookup feature was expanded to also display any future assignments that a student had.

 

It was brought to my attention that it would be handy for the selector window to provide feedback to you, indicating that a student already has future assignments.

Thus, in version 17.2.8 we have this refinement. As you can see, we have introduced a new icon that shows a eye symbol with a +. In addition, the Lookup text is displayed in a bold font.

The popup window shows all future assignments (relative to the meeting week being assigned) in bold text.

It is hoped that this refinement will assist you in allocating balanced student assignments. Of course, it goes without saying that we should still look at the item material / subject matter to ensure it is appropriate for the student concerned.

How to use Public Talk titles in a different language?

This question was posted here:

http://www.publictalksoftware.co.uk/mantisbt/view.php?id=709

Our brother asks:

When I switch from Italian to French for the software language, the Talks are still in Italian.
Why? I also tried to change the database language.

I will try to explain the steps you must follow:

Step 1

Database tab
Database Tab

The first thing you need to do is click on the Database ribbon tab.

 

 

 

 

Step 2

Restore Database
Restore Database

Next, click on the Restore Database icon.

 

 

 

 

 

Step 3

Browse
Browse

Now, click on the Browse button to show a file selection window.

 

 

 

 

 

 

 

 

Step 4

Prompt
Prompt

Initially you will be presented with this warning. You must choose Yes to proceed.

 

 

 

 

 

 

 

 

Step 5

File Selection
File Selection: C:\Program Files (x86)\Public Talks\Databases

Please navigate to the folder where Public Talks is installed and double-click the Databases folder.  The usual location is:

C:\Program Files (x86)\Public Talks\Databases

 

 

Step 6

Choose Database
Choose Database

Now you can select the default database that you would like to use. For each language you will see two versions of the database. One in MDB and the other in ACCDB. Select as required.

 

 

 

 

 

 

 

Things to be aware of

  • When you restore a default database it will reset everything. You will loose all your talk history. So please ensure you have a backup before proceeding.
  • Once you have restored the database it would be advantageous to use the Check for New Talks feature to see if it is up to date.

Including the Weekend Meeting on your Outlook Calendar

Beginning with Meeting Schedule Assistant version 17.2.7 you can synchronize with your Outlook Calendar. Click on the setting Create Weekend Meeting calendar events for this feature to be activated:

Outlook Calendar Options

 

It should be pointed out that the software application Public Talks has a richer set of features available for calendar synchronization. However, Meeting Schedule Assistant is now in many more languages than Public Talks. Thus, this feature has been implemented for those who would like to use it.

For each week on the Midweek Editor you click Weekend Meeting on the File menu:

Weekend Meeting Information

Fill in all the required details for the meeting and click OK to save the details to the schedule. The new events will be present on your Outlook calendar once you have done a synchronization:

Sample Outlook Calendar

There will only be one event for the Weekend Meeting, with both home and away talks listed. If you need separate calendar events then you must use the Public Talks application. Here is some sample wording for the calendar event:

The event will display the following information if it is supplied:

  • Chairman
  • Speaker + Theme + Congregation
  • Interpreter for Speaker
  • Hospitality for Speaker
  • Away Speakers + Congregation
  • Miscellaneous field  
  • Watchtower Conductor + Reader + Theme
  • Circuit Overseer Service Talk

It is hoped that this new feature will be of use to some of you. In time it will also be implemented for the Google Calendar feature too.

Synchronize with Outlook 365 / Outlook.com Calendar

Synchronize with Outlook 365 / Outlook.com Calendar

Meeting Schedule Assistant has always had the ability to send your assignments to a Google Calendar.

I am pleased to announce that the next version (17.2.7) will additionally support sending your assignments to a Outlook Calendar:

Outlook Calendar Options

It works in a similar way. You:

  • Sign in (connect to your Outlook account and grant access to your calendar content).
  • Select the calendar you want to synchronize with.
  • Set all other options as needed.

Example

Here is an example event in Outlook.com calendar:

Outlook Calendar Event

Please Note

This feature is still under development. MWB (Midweek Editor) support has been implemented and I am now working on SRR (Sound Rota Editor) support. Feel free to add a comment if you are interested in trying out this new feature.

Tutorial – Installing and Using the S-89 Assignment Slips with the Midweek Editor

When you try to use the S-89 Assignment Slips for the first time you are presented with this message:

 

 

Once you have received the ZIP file from me and downloaded it to your computer you can proceed with this tutorial: