8/24/23
Version 12.14.1
* The eric product list "Version" command now shows the server and user.
* cpag_interface.sh has a new -debug option to set CPAG_ERIC_DEBUG=yes.
* Add support for 3840x2160 displays in setup.sh.
* Updated for eric 0.7.0, which requires spicebig-toolkits-20230823 or later.
* Fixed a problem where the cpag_interface Unlock Product command would not always kill the session.
9/5/23
Version 12.14.2
* When you try to launch a locked product, the dialog now says whether the user is on the same server or a remote server, which could help to locate the user.
* cpag_interface has new warning, waiting, and error status codes for products.
Warning means that a user should check the ad placements and square-offs.
Waiting means that the product had missing ad images, and auto pagination will retry later.
Error means that the product had a problem like a database error that prevented pagination and needs review by a system administrator.
* The cpag_interface Version dialog now shows the ERIC version.
* The cpag_interface Unlock Product command now runs cpagkill with a path so it works from moai.
* The cpag_interface Unlock Product command no longer runs termdef so it no longer logs errors about not having a tty.
* When CPAG_ERIC_DEBUG=yes, cpag_interface writes a warning in the log if /u/cpag/cpag_moai_setup.sh is missing.
* Fixed more issues with the cpag_interface Unlock Product command.
* This version requires eric 0.7.3 and moai from spicebig-toolkits-20230831 or later.
9/11/23
Version 12.14.3
* ClassPag now supports logo names in the interface file.
ClassPag prepends the image in $COMP_LOGO/<logo_name>.eps to the ad.
Classified systems can use the logo name to place "new ad" or other attention getting logos in specific runs of ads while passing a single generic unadorned ad image to ClassPag.
The ad depth in the interface file should not include the logo.
The logo name can be in 0-based columns 142-151 of the sort file or in the ad_classified:logo_name item of the SCS Product XML.
ClassPag currently uses only the first letter of the logo name.
This creates a standard way to access the logo flag introduced in version 3.75.
If the product configuration specifies a logo flag column, ClassPag checks that colunm first, so old interfaces can continue unchanged.
* The third column of the ad statistics screen is more accurate.
The "Ads Loaded" at the top shows ads and headers from the interface file.
It no longer includes banners so it should be easier to check.
The "Ads" at the bottom now says "Placeable Items" to show that it includes headers, banners, and fillers.
9/14/23
Version 12.14.4
* eric 0.7.4 and higher + spicebig-toolkits-20230913 or later now support more ad fields including logo names, color names 1 to 3, strippable, house, gutter, page request, and column request.
* Installing the spice tools to /u/scs_cpag (SPICE_APP=cpag) is no longer necessary. cpag_interface now uses the tools from /u/scs_cpag when it is present, otherwise it uses /u/scs. A few scripts to run batch reports that set SPICE_APP=cpag now set SPICE_APP=all. This simplifies maintenance of servers that run only ClassPag.
9/26/23
Version 12.14.5
* The Find Ad toolbar button now has a configurable filter to show only the first segment of segmented ads.
* The right-click configuration dialog for the Find Ad toolbar button now has checkboxes to filter initial segments, ads with requests, and unplaced ads. Also, administrators have a checkbox to make the current settings the default for new sessions.
* When ClassPag reads SCS Product XML files, it now looks for the logo name in ad_classified:logo_name and then in run_info:logo_name.
Applications passing attention getter logos to AdMAX or eric must use the new run_info:logo_name item, which allows scheduling logos by runs. Applications feeding ClassPag directly can use either logo_name item. SCS Extended Product XML files use ad_classified:logo_name since they have no run_info section.
10/23/23
Version 12.14.6
* ClassPag now sorts line ad stacks after placing square-offs.
This produces better results for square-offs that dummy line ads.
* The "Agate Ad Specifications (Continued)" screen of the product configuration has a new field "First Ad on Col" to control whether the first ad on a column can come from the look ahead.
The default is Y, which works as before.
Setting it to N will place the first unplaced ad in sort order if its sort key starts with a letter before the sort key of the first look ahead ad.
This can produce better results on obit products with big look aheads.
* When ClassPag runs under eric, the first read of the control record copies fields from realcon.dat if it exists. This should help keep multi-node eric sessions synchronized.
10/25/23
Version 12.14.7
* ClassPag now returns a 'waiting' status to auto pagination on sessions with ads in the hold queue.
* Fixed a calculation with island ads that might go back to 7.57 from 2011.
* Fixed an error dragging ads from the previous version.
11/15/23
Version 12.14.8
* Copy and paste now works better from SCS Editor windows. It preserves most SCS special characters, so you can copy short SCS Composition sequences to email and then paste them back into the SCS Editor.
This should simplify support and documentation.
* The multi-site-sync now copies master products. The sync now assigns all products referenced by other products but not in eric to the server where /u/scs/remote/multi-site-sync.json sets push-config:true.
This requires installing scs tools from Nov 15, 2023, or later, to get the new version of /u/scs/remote/multi-site-sync.sh .
* findformversion.sh now shows the bspice and cpag interpreter versions.
* The "scr" and "scratchdir" options in runcpag.sh and menprof.sh now work better with eric product directory paths with the format "/u/ads/cpag/YYYYMMDD/PRODUCT-SESSION".
"scr" works from inside eric product directories, and "scratchdir" can specify either the full "/u/ads/cpag/YYYYMMDD/PRODUCT-SESSION" path or the "YYYYMMDD/PRODUCT-SESSION" suffix.
This can be useful to open eric product directories directly in order to access configurations that are locked inside eric.
ClassPag does not let you copy or save from or to eric product directories because it would interfere with eric and could corrupt the git repositories.
11/29/23
Version 12.14.9
* The "Column Vertical Rules" screen of the product configuration has a new boolean field "News and News" to control whether ClassPag draws vertical cut rules between two columns with news. The "Display Ad Dummying Style (Continued)" screen has a corresponding "News and News" for vertical rules inside square-offs. The default is 'N' to omit rules as before.
* The eric interface does a case-sensitive match when it checks the XML queue_type. Hold ads must have 'Hold', as specified in the xsd.
* Changes 'egrep' to 'grep -E' to avoid the warning "egrep: warning: egrep is obsolescent; using grep -E" in grep 3.8 and higher.
11/30/23
Version 12.14.10
* ClassPag will no longer open a session if it can't set a lock in eric.
* Fixed an uninitialized variable warning for ad_classified.column_request.
12/1/23
Version 12.14.11
* The "User Preferences (Continued)" screen of the product configuration has a new boolean field "Lock liners command locks page" to control what ads can be placed on pages with liner ads locked with '#'. The default of 'Y' does not place other ads. 'N' works like previous versions of ClassPag to place display ads and other types of ads other than line ads.
* Fixed a problem where two eric scripts were not executable.
12/5/23
Version 12.14.12
* The cpag_interface product list has a new "Remove Product" hotkey which unlocks the product in eric, sets the eric status to "new", removes the cpag product lock, removes the cpag control record, and renames the product directory by appending "-save-" and a time stamp.
All work in the product will be lost.
Use this as a last resort if you can not open a product.
This requires installing scs tools from Dec 6, 2023, or later, to get the new version of /u/moai/cpag/moai_api.json .
* The cpag_interface product list has a new "Start a Shell" hotkey to open an xterm window.
12/7/23
Version 12.14.13
* Refined the "Unlock Product" and "Remove Product" hotkeys in the cpag_interface product list.
* The cpag_interface product list hotkey to "Start a Shell" now opens the shell in the directory of the selected product, if the directory exists.
12/12/23
Version 12.14.14
* Opening expired sessions that have never been opened no longer gives an empty directory warning.
12/18/23
Version 12.14.15
* The cpag_interface product configuration list now has hotkeys to "Configure AutoPag for Product" and to "Configure Dependencies".
* The eric subdirectory now contains sample files extra_tz.txt.sample and ssh_port.txt.sample.
To add extra time zones to the AutoPag lists, copy extra_tz.txt.sample to extra_tz.txt and set the time zones as a JSON array with rows like {"TimeZone":"ET","TimeZoneLong":"America/New_York"}
If the ClassPag servers need to communicate on a port other than 22, copy ssh_port.txt.sample to ssh_port.txt and set the port.
* cpag_interface now prompts for ssh passwords when necessary.
This requires installing a spice toolkit from 15 Dec 2023 or later with a $TOOLS/rsa_setup.sh that supports the new '-r' option.
* Fixed some compile warnings in cpag_interface.
12/20/23
Version 12.14.16
* cpag_interface checks for rsa keys only before the first time it needs them so some commands now run faster.
* cpag_moai_setup.sh no longer needs changes if cpag is in /u/cpag.
1/12/24
Version 12.14.17
* cpag_interface now initially opens with 10 days of sessions instead of a month. The initial screen should now open in a third the time as before.
* cpag_interface now closes the date dialog and shows a 'working' message when searching for large date ranges.
* Added a setselinux.sh script to run "semanage fcontext" commands so "systemctl start scs" and ssh work. Run the script as root. It shows the commands by default.
Use the "-r" option to run the commands. Enabling selinux is not supported.
* Fixed a cpag_interface problem where deleting an expired session and then reopening it could give a warning about an empty directory.
* This requires installing scs tools from Jan 12, 2024, or later, to get the new version of /u/moai/api/eric_moai_api.json .
1/16/24
Version 12.14.18
* cpag_interface has new options to customize the initial date range.
-startoffset # and -endoffset # set the offset from the current date in days.
For example, "cpag_interface.sh -startoffset -1 -endoffset 7" starts with products from yesterday through next week.
You can set a system-wide default by copying the cpag_interface.conf.sample CSV in the eric directory to cpag_interface.conf and editing it.
The sample current has the two lines
STARTOFFSET,ENDOFFSET
0,10
* Views of the class nestings have two new hotkeys "Resequence all classes by class id value with multiple" and "Resequence all classes by class id order with multiple" to reset the sequence numbers of all classes either by the numeric value of the class id or by the alphanumeric sort order of the class id.
The hotkey also lets you select a small multiple to leave space for new classes.
1/17/24
Version 12.14.19
* Reduced the initial ad allocation from 80k to 40k and the initial class allocation from 10k to 3k. This reduces the virtual memory usage of a newly opened session by about 20 MB from 120 MB to 100 MB.
Use the "Limits" of the product configuration to increase the limits if necessary.
1/18/24
Version 12.14.20
* The pagination menu has a new item Test -> "Check configuration limits" to show the used and configured ads, classes, pages, columns, and images.
ClassPag allocates twice the ads in the configuration because each placement also needs an ad record.
ClassPag doesn't reduce allocations if the configuration is smaller, so the current allocation can be larger than the configured value, especially if you open several products in classic (non-eric) mode.
* When you reflow ads, ClassPag now warns if ads or classes overflowed.
* ClassPag now returns a hard error to AutoPag if ads or classes overflowed.
1/19/24
Version 12.14.21
* The cpag_interface dialog to set a date range now updates the ending date when you set a starting date to reduce the chances of accidentally setting a big range when you look at dates in the past.
* The interface check_pubfiles.sh script now works when copied to other directories as long as it can use the ClassPag environment in /u/cpag.
If you set 'root' or 'scanroot' with the 'start' command, you must repeat the same values for the other commands.
check_pubfiles.sh now checks for an optional configuration file called check_pubfiles.txt in the same directory as the script.
The file check_pubfiles.txt.sample shows how to set the options.
2/1/24
Version 12.15.0
* ClassPag can now embed the text of PDFs in a very small font.
This can help make PDFs with Identity-H encoded fonts searchable.
You can control it when printing by setting the new "Ad Text" field on the "Paper" screen to "T". (The "Ad Text" field takes the place of the legacy "Xitron" field, which is now on the second "Paper" screen.)
If you wrap ads, set the new "Write ad text in wrapped ads" field on the "Legal and Segmented Ad Specifications" screen of the product configuration to "T".
The text uses the first font listed in the "Fonts" page of the product configuration. If the font list is empty, ClassPag uses "Times-Roman".
Temporarily, when "cpag debugging" is enabled, each line of ad text starts with an initial "X" to differentiate it from the original ad text.
2/5/24
Version 12.15.1
* The "Write ad text in wrapped ads" field on the "Legal and Segmented Ad Specifications" screen of the product configuration has a new value "A" to write ad text in wrapped ads and in all postscript pages no matter how "Ad Text" on the "Paper" screen is set. This simplifies setting up products that need ad text in all pages.
* Improved the postscript for embedded ad text.
* The cpag_interface screen to refresh the product configuration now shows progress messages.
* Configured the XML writer so outext files with more than 10k records no longer log a warning to /u/scs/xmlsize.log .
* Improved support for file systems like xfs with large inodes.
This requires installing a spice toolkit from 3 Feb 2024.
* The loadtape.sh installation script now runs
git config --system --add safe.directory '*'
which should prevent "fatal: detected dubious ownership in repository" git warnings in eric.
* The loadtape.sh -fastrebuild option now also sets -fast.
2/14/24
Version 12.15.2
* cpag_interface shows a better message when a large date range overflows the product table. The table is currently 15k rows, which can hold over a month at 400 sessions per day.
* When you set a cpag_interface start date later than the end date, the dialog now advances the end date.
* autopag now auto imports if necessary. This fixes a problem where autopag pages could have no ads.
* Reduced cpag_interface xml table declarations. This reduces the RAM usage by over 100 KB.
3/8/24
Version 12.15.3
* The wide screen no longer closes the ad list after flowing ads.
* Fixed autopag configuration so 12 AM doesn't switch to PM.
* autopag now checks for late ads.
4/10/24
Version 12.15.4
* Class headers entered in the banner setup no longer change into banners if the product configuration has "Place class headers" disabled.
This fixes a problem where sessions could have extra pages with banner version of class headers.
4/30/24
Version 12.15.5
* The multi-site-sync now copies the paper, printer, and spread databases.
The sync copies them from the server where /u/scs/remote/multi-site-sync.json sets push-config:true, the same test that it uses for copying master products.
The changes are only in the cpag scripts import_payload.sh and prepare_payload.sh, so tools updates are not required if you already have scs tools or a copy of the /u/scs/remote scripts from Nov 15, 2023, or later, that supports push-config:true.
* Fixed a problem wrapping PDF images that have been edited. The "PDF BBox Pass" field on the "Legal and Segmented Ad Specifications" screen has a new value 'S' that sorts the segments by position before looking for break points.
When sorting is enabled, ClassPag sorts the segments if the ad is one column wide or if unwrapping folded ads is disabled. Sorting is not compatible with unwrapping wide ads. The sorted files end in "s.htm" in the cache directory.
* The window to load classification names from a file now has toolbar buttons.
6/10/24
Version 12.15.6
* Fixed a problem where level pages could omit class headers over display ads.
* Fixed a problem where level pages could not pack as efficiently as possible if only one-column display ads needed headers.
NOTE: To embed any character in a PostScript font with SCS Composition:
Find the name of the character by reading the AFM.
If the AFM is not in /u/scs/gs/fonts.site, you can make an AFM with
printafm FontName > test.afm
where FontName is the exact name of the font in PostScript.
If the character has a 'C' number 255 or less, you might be able to reach it with the <pi> command, like <pi 245,MYFONT> where MYFONT is the Composition font with the character. The number for <pi> is the position in the Composition font (the FNT file) not the position in the AFM. Composition remaps fonts
10 to 255 but leaves fonts 1 to 9 unmapped for use as symbols fonts.
You might need to load the font a second time with a font number less than 10.
C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ;
You can also access any character in the font with <pc> commands, even if the character has 'C' number -1.
The 'N' is the name. For example, to access the accented 'z' character
C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ;
use
<pc ``gsave /zcaron glyphshow grestore''>z
gsave and grestore pair keeps the postscript cursor from moving, so composition can track the line width.
The slash plus character name identifies the character.
The glyphshow command writes the character.
If you are embedding an accented character, place the normal unaccented version immediately after the <pc>. The characters will overwrite exactly, and Composition will know the width. With this method, you should disable letterspacing with <xl>.
If you are embedding a character with no unaccented version, use a thin-space, en-space, or em-space, whichever is closer to the character's width.
With this method, Composition will see the space as a word break, so you should disable hyphenation with <xh> and you should avoid <qm>.
6/11/24
Version 12.15.7
* When ClassPag is opened with an empty units database, ClassPag now creates default units entries instead of warning about 'Unrecognized unit "I"'.
* When ClassPag is opened with an empty product config database, after ClassPag warns that it has no product, it no longer asks you to select from an empty product list.
* mapclass.sh now has an XFontSizeAll like runcpag.sh and menprof.sh to force the window to a given XFontSize.
6/20/24
Version 12.15.8
* The check for new ads now shows an overview of conflicts with the new ads.
This can be useful if a new ad doesn't fit in a square-off.
6/29/24
Version 12.15.9
* Multi-column line ads placed before their class header now have all required class headers.
* Updated the PDF wrapping added in version 12.15.5 for python 3.6 on CentOS 7 which sort elements and doesn't support default_namespace.
* The window to modify page reservation blocks has new hotkeys to view and copy from other products. This is useful if you change a session to another product.
7/15/24
Version 12.15.10
* The numbers and tickmarks on the page preview rulers are now configurable.
The "User Preferences" screen of the product configuration has two new numeric fields "Show rules... Inc" and "Div". "Inc" is the increment for the numbers. The default is 1. If "Inc" requires more numbers than fit in the normal font, the page preview will switch to a small font.
"Inc" can be fractional.
"Div" is the number of divisions between numbers. For example, if "Inc" is 1 and "Div" is 4, the space between each pair of numbers will be divided into quarters.
The control record has matching Inc and Div fields to allow defaults by directory.
"Cmd -> Misc -> Set rule direction" now lets you set the Increment and Divisor.
When the page preview opens, it now restores the rule direction, increment, and divisor from the control record.
* ClassPag can now generate class headers.
Enter the classes in "Setup -> Set Class Names".
Under "Setup -> Banners -> F12 -> Edit Index Styles", create an index style called "header" with an expression that uses ClassName and ClassTitle to generate composition for the header.
Run "Setup -> Set Class Names -> F12 -> Compose Class Headers".
This will create an eps file in the current product directory for each class.
Move the eps files to another directory.
Then use "Setup -> Banners -> F12 -> View Ad Directories ->
browse to the directory with the headers ->
F12 -> Load -> AllAsHdr" to create banner records for the headers.
Browse using an absolute directory (starting with a slash) so the location is independent of the work area.
If you update the headers, running Load -> AllAsHdr will update images, so you do not have to delete the old header records first.
If you update only the header style, you can also use
"Setup -> Banners -> F12 -> Update sizes from EPS"
NOTE: To pass wrappable legal ads with AdMAX interfaces using ERIC, create an AdMAX legal format with <SG 1,1,1, 1,1,1, 1,1,1><AS>
AS enables segmentation.
The SG triplets are for the first, middle, and last segments.
Each triplet has the minimum, ideal, and maximum depth.
When paginating with ClassPag, the values should all be 1 point to give
ClassPag as much flexibility as possible.
When AdMAX exports to ERIC, it automatically sets the Breakable flag for ads with segments and writes the segment locations in the EPS with %%SCSBreakPos comments.
8/21/24
Version 12.15.11
* ClassPag has a new optional tool bar button for the "Shift Pages" command.
You can enable the button using the "Shift pages button" field on the "Toolbar Button Preferences (Continued)" screen of the product configuration or by using the right-click menu on most tool bar buttons.
* The GUI to add fonts to composition now checks that you have operating system level read and write permission to the envvar database because adding fonts requires adding a record to that database.
* The "Display Ad Directories" screen of the product configuration has new boolean fields "Search ad directories for fillers", "banners", and "headers".
The default is "Y" to search for those items using the display ad directory list and the same rules as for display ads, as ClassPag has always done.
The new value "N" looks for only an exact match of the image name if the image name starts with a slash or dollar sign.
This allows ClassPag to open sessions faster on servers with slow disk access, for example, with fillers on a CIFS share.
* ClassPag now scans the "Display Ad Directories" search list at the start of sessions and skips directories that do not exist. This prevents old directories from interface changes and directories on down or unmounted servers from slowing down sessions. If a server is restored, view an external ad or close the session and re-open it.
* Changed the internal field name of the "Image" column of the "Agate Fillers" setup window from "im" to "image" to match corresponding image type columns of other windows where "image" is the image type and "im" is the image file name.
This fixes the tool tip display on the "Image" column header in the agate filler setup. Filters and column selections for the Agate Fillers window might need to be updated for the change.
* The ERIC product list "User Preferences" dialog now shows that it sets the ClassPag user preferences, and the "Save" button is always active so you can set an empty preference string. The preferences are currently saved in "$HOME/.cpag_interface.prefs".
* cpag_interface.sh has a new -cpag option that takes arguments to pass to ClassPag sessions. If you access ClassPag from different workstations, you can use this to pass options specific to that workstation, for example,
/u/cpag/eric/cpag_interface.sh -cpag "XFontSizeAll 20"
or if the launch script can't pass quotes, you can repeat the -cpag option as needed
/u/cpag/eric/cpag_interface.sh -cpag XFontSizeAll -cpag 20
8/24/24
Version 12.15.12
* The "Set Sort Key to Sort Line" field of the "Agate Ad Specifications (Continued)" screen of the product configuration has a new value "A" to append space + <5 digit number of agate ads> + "0" to agate ad sort keys.
This can be useful if some classes have many ads with the same sort key, for example, legal ads that all have the same "CASE NO" sort key.
* Drags of square-off banners now move all ads of the square-off on all pages.
Drags of ads inside the square-off move just the ad as before unless you clicked on one of the buttons to move the entire square-off.
* ClassPag has a new "Position normal" command and optional tool bar button to undo a placement modifier. Selecting the command or clicking on the button immediately before dragging a square-off banner will move just the banner instead of the entire square-off.
You can enable the button using the "Normal position button" field on the "Toolbar Button Preferences (Continued)" screen of the product configuration or by using the right-click menu on most tool bar buttons.
* The commands to view the current font in composition and to view all fonts in composition in the GUI for adding fonts now shows additional right-justified text to verify the character widths.
* The conversion of UTF8 Unicode to ISO when reading classsrt.xml files now converts non-breaking spaces xC2 xA0 in UTF8 Unicode to normal spaces instead of to non-breaking spaces xA0 in ISO that would show as question marks on the screen.
* The "View composition font list" command in the ad directory browser has a new hotkey to show the SCS Character Set and a new hotkey to test if Composition is running.
NOTE: ERIC requires postgresql 11 or higher for its support of covering indexes.
Earlier versions of postgresql can produce errors when reading trickle feed json files like
"RuntimeError: you have set that the relation :customer of Eric.Ad has :on_replace set to :update but you are giving it a struct/changeset to put_assoc/put_change."
Servers should have the highest version of postgresql possible, currently 15 for RHEL7/CentOS7 and 16 for RHEL8/Alma8.
8/27/24
Version 12.16.0
* The ClassPag has a new option to launch the 172x44 view with the more compact, smaller information area of the 127x36 view. At the same font size, the page previews in the 172x44 view have about 20% more space than on the 127x36 view and about twice as much space than on the original 172x44 view.
Use the new "172c" or "widec" option with the menprof.sh and runcpag.sh launch scripts.
"172c" and "172c classiclook" launch with the classic buttons.
"172c newlook" and "172c customlook" launch with the tabbed information boxes.
The "172" and "wide" options continue launching the original 172x44 view.
8/31/24
Version 12.16.1
* When the cpag_interface product list is empty, the message now shows whether the problem is the date range, a user not in any sites, or eric moai not running.
* The Overprint field of the Paper database has new values "A", "M", and "X" to set overprint mode. Postscript devices have both an overprinting state and an overprint mode. Some postscript devices ignore the overprinting state unless overprint mode is enabled.
"A" is like "T" but enables both overprinting and overprint mode.
If you want to force ads to overprint their background instead of creating knock-outs, use "A". This can cause issues with ads that expect that overprinting is disabled.
"M" is like "N", leaving the default overprinting but setting overprint mode.
If you have ads that are supposed to overprint their background but are creating knock-outs, use "M". AdMAX ads should use <pc "true setoverprint"> .
"X" is like "F", but clears both overprinting and overprint mode.
If you have ads that are supposed to create knock-outs in their background but are overprinting it, use "X".
If you want ad text to overprint a background color, you must enable both overprinting "true setoverprint" and overprint mode "true setoverprintmode".
If you enable overprinting but want knock-outs behind logos, before embedding the logos, you must disable overprinting with "false setoverprint" and/or "false setoverprintmode" and then either draw a white box behind the logo or build logos that paint over a white background.
You can preview color separations with ghostscript using
gs -sDEVICE=tiffsep -r150 -o out.tif cpag.ps
which creates out(Cyan).tif out(Magenta).tif out(Yellow).tif out(Black).tif and out.tif with C, M, Y, K, and composite plates.
* The ClassPag setup script now sets GS_OPTIONS="-dNOGC -dNOPLATFONTS" and GS_FONTPATH="/u/scs/gs/fonts.site" so gs can still find fonts if the /usr/local/bin/gs script isn't installed.
* The view commands in the GUI to add fonts to Composition no longer warn about not finding a "linea" format.
* The fixencoding.sh script now works better on fonts produced by fontforge.
Recent versions of Composition explicitly map more characters, so when adding fonts to Composition in the GUI, you should keep the current encoding and switch to the Standard Encoding only if you have problems with accented characters.
* Fixed a problem on single server ERIC instances where removing product directories would not work because it depended on reading the server list from /u/scs/remote/multi-site-sync.json.
9/4/24
Version 12.16.2
* "Ad Import Restrictions" screen of the product configuration gives more control over the extensions that ClassPag tries when searching for ad images.
The new field "Check for EPS extensions" can be 'T' (the default, to check for EPS and eps), 'U' (to check for EPS), 'L' (to check for eps), or 'F' (not to check for EPS or eps).
The new field "Check for no ext" can be 'T' (the default, to check for an empty extension) or 'F' (not to check for an empty extension).
The existing fields "Check for PDF extensions" and "Check for for TIF" have additional 'U' and 'L' values to try only upper case or lower case versions of the extension.
If the base part of image names is always digits or the correct case and the interface passes extensions, you should set "Check for EPS files in lower case" and "upper case" both to 'N' because ClassPag will try the upper or lower case of the complete name, including the extension.
The command below shows the number of files with each extension in the current directory.
find . -maxdepth 1 -type f | sed -e 's/.*\././' -e 's/^\.\///' -e 's/^[^.]*//' | sort | uniq -c
* When ClassPag searches for image names with different permutations of capitalization and extensions, ClassPag is more careful to try each possible name only once.
* When 'gm' is not present, ClassPag now checks for 'magick' before 'convert'.
9/16/24
Version 12.16.3
* The eric version message now shows whether the system is single node or multi-node.
* Some eric warning messages now show more appropriate text depending on whether the system is single node or multi-node.
* Updated pstoepsf.sh for the new version of ImageMagick that uses "magick" instead of "convert".
* Fixed pasting composition smart quotes into editor buffers.
* Fixed a problem removing eric product directories on single node systems.
10/22/24
Version 12.17.0
* Printer expressions have a new integer variable PageColWidth with the number of columns on the page or block. As with PageWidth and PageDepth, which have the HiResBoundingBox values, you can use PageColWidth for naming pages or for forwarding to a queue based on size.
* On eric interfaces, when you change classes with Ads -> Modify Classifications, ClassPag now asks if you want to rerun the import.
If you enable a class that had late ads come earlier in the session while the class was disabled, you might need to rerun the import to pull the ad into the session.
* ClassPag now logs product directory status changes as action UPDATE to database CONTROL with the note "eric status" followed by the new status.
This can help track down why a product changed to or from 'final'.
* The "Classified Heading Placement" screen of the product configuration has a new field "Place on first wide line ad if all wide". When it is set, if a class has a one-column header but all multi-column line ads, ClassPag will place the header on the line ads instead of flowing it in class.
* runcpag.sh and menprof.sh now support a -G geometry option like Layout.
The -G syntax is "width x depth + x + y" in pixels.
For example, to set a 1000x500 window at position 200,100 use "-G 1000x500+200+100"
ClassPag sets XFontSize which limits the ability to set the width and depth.
The querygeom utility
/u/scs/tools/bin/spice -q /u/scs/tools/tbin/querygeom
opens a window that you can resize, and then it shows a -G option matching the size and location of the window.
* The XFontSizeAll option now allows two values, where the second value is the small font used inside ad boxes, for example, "XFontSizeAll 40,20" ClassPag now also checks for an XFontSizeAll environment variable.
When XFontSizeAll has only one value, ClassPag now sets the small size to 2/3 of the large size instead of setting all sizes equal. This matches setting XFontSize.
* ClassPag finds gv in more cases when ghostview isn't present.
* cpag_interface runs rsa_setup.sh with a 20 second timeout.
This reduces the wait from 150 seconds if the remote host is not available.
A successful run should take about 0.2 seconds.
* Fixed a problem where ClassPag wasn't searching alternate display ad or agate ad directories when either one was empty and CPAG_EPS had its usual empty value.
* Fixed a problem with the "widec" screen where commands would stop working.
* Fixed a problem where ClassPag would sometimes not place a long multi-column segmented ad in the first possible place.
* More updates to pstoepsf.sh.
Added -antialias/-noantialias/-optimizecolorspace/-nooptimizecolorspace when using pdftops. The default now enables them when pdftops supports them.
Updated -page (which defaults to 1) to work with pdftops.
Added -level3 for Level 3 with either pdftops or gs.
Added -pdfres # to set the pdftops resolution. The default is now 400 instead of the pdftops default of 300.
The higher resolution and the use of antialiasing improve results with -level1 on PDFs that require rasterization due to transparencies.
-verbose now shows the pdftops or gs command line.
More shell syntax updates.
11/4/24
Version 12.18.0
* ClassPag can now post pages to a web server and send email notifications.
The product configuration has a new "Web and Mail" screen.
Set "Web Root Dir" to the root directory on the web server for pages, for example, /var/www/html/cpag
Set "Web Base URL" to the URL corresponding to the Web Root Dir, for example, https://www.yoursite.com/cpag
Set "ps2pdf Options" to ps2pdf options to convert ClassPag postscript output to a PDF, for example, "-dEPSCrop"
Set "Page Name Expr" to an expression for PDF file names, for example
f$regexsubst(ImportDir,"/","-") // "-" //
((BookName = "")? BookPageNumber: BookName // "-" // BookPageNumber) // ".pdf"
Set "Email group" to a group of email recipient for notifications.
To update the email address book, use
Setup -> Printer Names -> F12 -> Manage Email Address Book
or from a command line, run
$TOOLS/spice '$SCS_ALL_ROOT/tools/tbin/addrbook.xfm' manageaddrbook
ClassPag will add a long, random path segment between the base directory and the page pdf to make the pages hard to locate without the notification email.
ClassPag uses the same email formulas and databases as Layout.
The databases are in $SCS_ALL_ROOT/tools/data/ , usually /u/scs/tools/data/ .
addrgrp has the list of groups. addrmem has members of each group. addruser has the list of users.
Printer items have two new boolean fields "Copy to web" to copy pages to the Web Root Dir and "Send email" to send email notifications.
If you enable "Copy to web", you can reduce the print "Command" to just and echo because ClassPag will manage converting and renaming the files.
ClassPag provides an email template in email/sample.ptn
Copy this file to default.ptn.
If it has a section at the end starting <| $if 1 |/>
change the "1" to a "0".
That section declares the variables that you can use in the email text.
You can suppress the lines with "$if 0" but do not remove or comment the lines.
When users print pages, ClassPag looks for the productid.ptn then for the siteid.ptn, and then last for default.ptn.
The initial section can have the lines starting "Subject:", "From:", "To:", "ReplyTo:", "CC:", and "BCC:". The addresses in the email group are added to the "To:" line.
Then the template should have a blank lines, and then the body of the email.
The pages are in a table called PageTable that you can process with
<| $foreach PageTable |/>
<| $endfor |/>
* The check for alternate products now allows products with different site ids if they have the same corporation name. This allows both site-level and corporation-level master products.
11/6/24
Version 12.18.1
* When ClassPag creates ads from a directory of eps images, you can now use the code "T" to set the ad type. Use "-TD" to mark display ads (the default) and "-TA" to set agate ads.
* Fixed printing multiple pages to web.
* Email notifications for spreads now link both pages to the same url.
* Fixed email notification to expand user names.
* The Paper and Spread windows now have a hotkey to manage the address book.
11/7/24
Version 12.18.2
* Printing pages to the web now removes the previous PDF of the page to reduce the risk of publishing old pages.
* Fixed a problem where the email links could have page information from the last page printed.
11/8/24
Version 12.18.3
* Updated the sample email pattern to HTML.
* Added an email page table field with the file name.
* ClassPag now converts the email group names, page table fields, and page fields to UTF-8. The email template pattern should be in UTF-8.
11/13/24
Version 12.18.4
* Added ProductPaperId and ProductEditionId to the email template with the paper and edition from the product configuration.
Empty id values currently return "00".
11/15/24
Version 12.18.5
* Added ProductPaperId and ProductEditionId to expressions for directories.
12/30/24
Version 12.18.6
* The banner text window has a new hotkey to copy the banner text to a file.
This makes it easier to test composition with a banner text item.
* The compose.sh utility compares files with binary characters better.
* Formula font creator from Dec 3 or later rejects AFMs created by printafm on a substituted font. This helps to prevent loading incorrect metrics if you run font creator from a command line on a font that isn't on the gs search path.
* Fixed the wrap all command to process ads starting with SEG4.
12/31/24
Version 12.18.7
* ClassPag now supports longer image names and descriptions in XML interfaces by extending the sort file image name / description field with the unused sort file agency field, which increases the image name length from 29 to 61 characters.
To enable this, set "Sort file Agency extends Description" on the "Ad and Class Conversions (continued)" product configuration screen.
* The processxml formula has a new -a option to place characters 30 to 61 of the image name in the agency field.
1/10/25
Version 12.18.8
* The NAC interface has new -b# options for processing hyphenation word breaks.
-bs shifts hyphens to remove word breaks by converting "x-</n>y" to "xy </n>".
-br removes line breaks by converting "</n>" to spaces and joining words split by "-</n>".
-bx cancels hyphenation by adding a <xh> command.
-bf forces ragged right by treating a J xtag like an R.
To use any of these options, add "readopt" and then the option to the import command of the product configuration, for example
$CPAG_INT/mapclass.sh nac readopt -br readopt -bx readopt -bf
The "readopt" option of mapclass adds the next argument to the READOPT environment variable, which the makenac.sh script adds to the readnac command line.
* mapclass.sh has a new "batch" option to suppress prompts for testing.
* Updated reports for 2025.
1/23/25
Version 12.18.9
* Banner items that link to files or dinks can now reference PDFs and bitmapped images. This fixes a problem where a banner with a PDF ad as a dink would get postscript errors.
* The ad list in the page preview now has a search setting to restrict the list to dinks.
* More updates to pstoepsf.sh.
Reverted the default -pdfres from 400 to the pdftops default.
Fixed parsing of -pdfres #.
-verbose shows more information.
Added -tmp TMPDIR to set the directory for temporary files to TMPDIR.
* The Paper screen now allows a PS Level of 3, which currently works the same as 2.
1/30/25
Version 12.18.10
* The "Web and Mail" screen of the product configuration has a new "ps2pdf Command" field to set the name of the conversion utility.
The default is ps2pdf. You can change it to epstopdf.
If the command ends with "epstopdf", ClassPag automatically uses the --outfile= command line syntax and defaults to no options instead of to "-dEPSCrop".
The "ps2pdf Options" field no longer trims spaces.
NOTE: The eric log moved from /u/moai/eric/debug.log to /u/scs/log/moai_service_ERIC.log in Feb 2024.
2/21/25
Version 12.18.11
* The "Classified Heading Placement" screen of the product configuration has a new boolean field "Place extra parents instead of fillers" to control how ClassPag treats multi-column ads under the initial parent header for a class.
The default of 'Y' places additional parent headers, even if the parent header for that class would not usually be repeated. 'N' places fillers.
This produces better pages, especially in sessions with multi-column line ads and a zero span gap.
* The "Ad and Class Conversions (continued)" screen of the product configuration has a new boolean field "Combine XML booking + vendor in Booking". Set this field to 'Y' to store the booking_id in the first half of the BookingId field and the ad_vendor_id in the second half. ClassPag will show the booking and vendor on the screen and in the output xml. The default value of 'N' continues taking the booking_id if it is not empty and otherwise the ad_vendor_id.
This allows both the booking id and the vendor id in the pass back file without increasing the size of the sort file or the ClassPag ad database.
* When ClassPag sends a save area to SCS, the package now captures the email address book databases addruser, addrgrp, and addrmem in /u/scs/tools/data.
This helps reproduce issues with email notifications.
* When the session requires more pages than the configured maximum, ClassPag now shows a warning instead of hanging.
* The eric history list now has scrollable columns for the node and tag.
6/13/25
Version 12.19.0
* The "Bottom Margin" of the "Margins for Paginated Area within Pages" screen of the product configuration no longer defaults to 1/4" when it is "0". "0" now means a margin of 0.
The work-around of setting the margin to 1cpt is no longer necessary.
It continues to default when it is blank and the page has no registration marks.
* The "Column Vertical Rules" screen of the product configuration has a new
"Align above Ads" boolean field to align vertical cut rules above a multi-column ad. If some columns have more leading, the rules will extend down as far as the columns with less leading.
* When "Place extra parents instead of fillers" is enabled, ClassPag will now shift leading from below a normal class header to above it to make space for a super header. This fixes a problem where ClassPag would sometimes not place super headers that might have fit, especially when level pages was enabled.
* The eric history list shows dates in a more consistent and more compact format.
* The eric Edit menu now has a "Check Tricklefeed" option to check if the trickle feed is running by looking for inotifywait processes.
* The control database management window now knows how to find eric sessions under /u/ads/cpag. Sites with eric interfaces can now purge the control database with Setup -> Import Configuration -> Edit the Control Database -> F12 -> Removed unused records. It could take several minutes for databases with a large number of records.
* The control database management window command to remove unused control records now asks whether it should process import areas. Previous versions always processed all records, including import areas, and could have purged records for rarely used import areas.
* Added a purgecontrol.sh script to purge records in the control database for work areas and save areas that point to directories that no longer exist.
The script leaves import areas by default so it won't purge rarely used import areas in classic non-eric installations. The syntax is
purgecontrol.sh
-import to purge control records for import areas that no longer exist
-verbose to list each record
-dryrun to show the records without removing anything
-c to show the log
To get a summary of how many records would be deleted, use
purgecontrol.sh -dryrun -c
* The GUI to add fonts to Composition now warns if a ttf generates a large number of glyphs and gives an option to regenerate the font with only unaccented letters. If you will need only unaccented letters, digits, and basic symbols, a smaller font will load faster.
Copying fonts with large numbers of glyphs to /u/scs/t1data/Fonts for AdMAX previews requires a spice from Mar 6, 2025, or later.
* The readnac interface now allows -b options to be combined so you can use "readopt -brxf" instead of "readopt -br readopt -bx readopt -bf" to save space in the import command.
* The makenac.sh script now writes to the log if it doesn't find any ad text files. This makes it easier to track down what happened when the text files are missing.
* Updated the commands to get the IP and MAC addresses for recent versions of Linux.
* Removed some debug code from the formula code to print pages.
* Fixed a problem introduced in 12.16.3 where pasting into an editor buffer could cause all normal ascii quotes to be converted into composition open and close quotes. It is the default for composition buffers but causes problems in buffers with expressions.
* Fixed a problem where setting "Combine XML booking + vendor in Booking" would not affect wrapped ads.
6/30/25
Version 12.19.1
* The wide screen interface no longer closes the ad list after drags.
* Updated testcpag.sh to require the checkfdf utility and to show any missing sessions.
* The popup that shows the ClassPag version now shows the installer and the installation date.
* loadtape.sh -batch now kills cpag processes without asking so it works better from scripts.
* Improved the ad stack recreation with ads that have equal sort keys.
7/3/25
Version 12.19.2
* The install date in the ClassPag version popup now converts to local time.
8/4/25
Version 12.19.3
* When you send a product to SCS, the confirmation dialog lists other referenced products that might affect pagination.
* The installation script now checks for the descriptive user name from the REALNAME environment variable before checking the comment field in /etc/passwd.
This allows installs from root by install_scs.sh to pass a more useful name.
* loadtape.sh has a new -realname option to specify the installer for logging.
* The install log view under "Setup -> Log Files -> access logs ->
View Update Log" now shows more columns.
* The "Spice" line of the Version dialog now shows +32 for 32-bit builds and +64 for 64-bit builds.
* Fixed a problem where wide class headers over incompatible ads could cause internal errors. Wide headers with horizontal pagination could provoke this.
8/6/25
Version 12.19.4
* Horizontal pagination with S (grid) and Z (fill gaps) now places fillers to fill holes above manually placed wide ads.
* The check before printing pages now warns if disk space is low.
8/20/25
Version 12.20.0
* ClassPag can now unwrap multi-page wrapped PDF ads. Use the new "MPDF" value
in the "Auto Segment Ads" field on the "Legal and Segmented Ad Specifications"
screen of the product configuration. ClassPag can detect the number of pages,
the number of columns on each page, and the width of the columns.
The wrapped PDF ads should have no margins inside the left, top, and right edges of the page's CropBox. Margins between the CropBox and the MediaBox are ok.
ClassPag calculates the unwrapped width and depth and currently ignores the width and depth in the sort file.
* The epstosort.sh interface script can now also scan pdfs.
It has new options -c # as an alias for -w # to set the column width in points,
-a to create agate ads instead of display ads, and -p <text> to set a prefix to strip from file names before extracting the ad number.
Use -p if all of the ad image files start with the same long fixed sequence that doesn't leave enough characters to create unique ad numbers.
9/26/25
Version 12.20.1
* ClassPag can now wrap segmented legal ads to agate ads so they retain the same class headers and cut rules as normal legal ads that flow in column.
The "Legal and Segmented Ad Specifications" screen of the product configuration has a new field "Wrap Ads as". Use "A" to create wrapped ads as agate ads. The default is "D" to create wrapped ads as display ads.
* ClassPag now updates the width "MPDF" ads that it can't wrap and that have a width of 0 columns in the sort file. This fixes a problem with the interface sending 0 column ads.
* ClassPag print commands should run "epstopdf" from $TOOLS instead of /usr/local/bin. The spice tool kit now provides epstopdf (version 2.7), epstopdf-2.28, and epstopdf-2.34. Print commands should explicitly run the version that they require, like $TOOLS/epstopdf-2.34
* The Statistics History is now available in the Reports... menu. The history shows the totals of the ads in each class for each run date of each product. You must use a hotkey in the window to save the current session. You must be careful to have only one session per run date with a given product id.
* Added Spanish translations for some common warnings in mapclass.
* ClassPag is now available as a 64 bit executable for testing.
ClassPag for AlmaLinux 10 / RHEL 10 will be 64 bit only.
* Fixed a problem showing previews in ad boxes of PDFs when the CropBox was different from the MediaBox. ClassPag now uses the -cropbox option with pdftoppm and pdftocairo.
* Fixed a problem displaying graphic characters in spice buttons. This fixes a problem where the arrows in buttons in the "Column Selection" dialog inside lists could be missing.
* Fixed a problem where graphic characters would be missing with XFontSize larger than 30.
Comments
0 comments
Please sign in to leave a comment.