From cff4ea71389cc306a03b1a3273fc2a8ae52f6f25 Mon Sep 17 00:00:00 2001 From: Neal Date: Thu, 24 Sep 2026 11:48:41 -0400 Subject: [PATCH 1/5] add reproduction builder to image; add tests --- .gitignore | 1 + Dockerfile | 14 ++ app/Config/microfilm.csv | 261 +++++++++++++++++++++++++++++++ exe/build-reproductions-only.php | 51 ++++++ tests/ReproductionsOnlyTest.php | 78 +++++++++ 5 files changed, 405 insertions(+) create mode 100644 app/Config/microfilm.csv create mode 100644 exe/build-reproductions-only.php create mode 100644 tests/ReproductionsOnlyTest.php diff --git a/.gitignore b/.gitignore index 97aaa5d..92eb0d9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ public/minimal* public/cache is_prod .phpunit.result.cache +generated/ diff --git a/Dockerfile b/Dockerfile index 49c59a7..e992dbf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,8 +9,17 @@ RUN git clone https://github.com/douglascrockford/JSMin /tmp/jsmin && \ gcc /tmp/jsmin/jsmin.c -o /usr/bin/jsmin && \ rm -rf /tmp/jsmin +FROM php:8.3-fpm-alpine AS collection-config + +COPY ./app/Config/microfilm.csv /tmp/microfilm.csv +COPY ./exe/build-reproductions-only.php /tmp/build-reproductions-only.php +RUN mkdir -p /generated && \ + php /tmp/build-reproductions-only.php /tmp/microfilm.csv /generated/reproductions-only.php + FROM php:8.3-fpm-alpine AS development +COPY --from=collection-config /generated /opt/findingaid/generated + # add other deps for dev here RUN apk add --no-cache \ libzip-dev \ @@ -62,6 +71,8 @@ RUN composer install --no-interaction --no-dev FROM php:8.3-fpm-alpine AS ci +COPY --from=collection-config /generated /opt/findingaid/generated + RUN apk add --no-cache \ libzip-dev \ bash @@ -75,6 +86,7 @@ COPY ./phpunit.xml /opt/findingaid/phpunit.xml COPY /app . COPY exe/build.sh /opt/findingaid/exe/build.sh +COPY exe/build-reproductions-only.php /opt/findingaid/exe/build-reproductions-only.php COPY entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh @@ -84,6 +96,8 @@ CMD ["php-fpm", "-F"] FROM php:8.3-fpm-alpine AS production +COPY --from=collection-config /generated /opt/findingaid/generated + RUN apk add --no-cache \ libzip-dev \ bash \ diff --git a/app/Config/microfilm.csv b/app/Config/microfilm.csv new file mode 100644 index 0000000..42a9d53 --- /dev/null +++ b/app/Config/microfilm.csv @@ -0,0 +1,261 @@ +identifier,ead_id,"M-Film Number",record_title,ead_location +F69M-690,F69M-690,M-690,"Haycraft family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt74f47gqw0k +F70M-731,F70M-731,M-731,"Julia Hoge (Spencer) Ardery genealogy collection",https://exploreuk.uky.edu/fa/findingaid/?id=xt78gt5fbr81 +154FM-114,kukm154fm_114,M-114,"Mays Lick Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt70rx937t2j +154M-124,kukm154m_124,M-124,"A. H. Tarvin scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7x3f4kmn4g +165M-610,kukm165m_610,M-610,"Daniel Keller Weis papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7z610vr146 +176M-777,kukm176m_777,M-777,"Edna Talbott Whitley scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt73xs5j9s64 +1F49M-39,kukm1f49m_39,M-039,"Charles Richard Staples memorandum and history",https://exploreuk.uky.edu/fa/findingaid/?id=xt7tqj77td23 +1F49M-91,kukm1f49m_91,M-091,"Notes on Morton School",https://exploreuk.uky.edu/fa/findingaid/?id=xt747d2q5d8f +1F50M-37,kukm1f50m_37,M-037,"Lancaster Lodge Freemasons record book",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ncj87hp9w +1F50M-6,kukm1f50m_6,M-006,"Stephen Gano Burbridge letters",https://exploreuk.uky.edu/fa/findingaid/?id=xt7xwd3pwc78 +1F51M-17,kukm1f51m_17,M-017,"Cyrenius Wait Papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gth8bgp81 +1F51M-4,kukm1f51m_4,M-004,"Records of the presbyteries in Kentucky,",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sf7664k6t +1F51M-45,kukm1f51m_45,M-045,"John W. Tuttle papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt72z31ngm46 +1F51M-56,kukm1f51m_56,M-056,"Forsythe family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cfx73v90w +1F52M-16,kukm1f52m_16,M-016,"John Lyle diary",https://exploreuk.uky.edu/fa/findingaid/?id=xt7j6q1sfq0v +1F52M-54,kukm1f52m_54,M-054,"Benjamin Wilson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt78sf2m6d5m +1F52M-58,kukm1f52m_58,M-058,"Louisville Presbytery, Presbyterian Church in the U.S.A. records",https://exploreuk.uky.edu/fa/findingaid/?id=xt72bv79sb4k +1F52M-61,kukm1f52m_61,M-061,"Mt. Horeb Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gms3jx81q +1F52M-65,kukm1f52m_65,M-065,"James Rogers papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt759z908t9x +1F52M-67,kukm1f52m_67,M-067,"Transylvania Presbytery, Presbyterian Church in the U.S.A. records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7b5m625g4m +1F52M-74,kukm1f52m_74,M-074,"First and Second Presbyterian Churches Records",https://exploreuk.uky.edu/fa/findingaid/?id=xt700000031r +1F52M-78,kukm1f52m_78,M-078,"Edward Combs Watts papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7d7w67412x +1F53M-109,kukm1f53m_109,M-109,"William Stuart Lester letters dealing with the Goebel affair",https://exploreuk.uky.edu/fa/findingaid/?id=xt79kd1qg63x +1F53M-269,kukm1f53m_269,M-269,"Memoir of William T. Love",https://exploreuk.uky.edu/fa/findingaid/?id=xt751c1tf62d +1F53M-73,kukm1f53m_73,M-073,"Midway Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ttd9n3m9t +1F53M-77,kukm1f53m_77,M-077,"Fackler family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7vt43hxs77 +1F53M-79,kukm1f53m_79,M-079,"Quicksand, Kentucky, Regular Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt776h4cnz3j +1F53M-82,kukm1f53m_82,M-082,"Hazel Green, Kentucky, First Presbyterian Church session book",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hqb9v1m81 +1F53M-89,kukm1f53m_89,M-089,"Lair Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7t7659d92v +1F54M-103,kukm1f54m_103,M-103,"Menifee Memorial Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7v6w967h73 +1F54M-116,kukm1f54m_116,M-116,"Edward Henry Hobson letterbook and miscellany",https://exploreuk.uky.edu/fa/findingaid/?id=xt78gt5fbs95 +1F54M-130,kukm1f54m_130,M-130,"Edward Callistus Barlow papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt731z41rt9p +1F54M-131,kukm1f54m_131,M-131,"William Johnson Stone papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt77sq8qc82b +1F54M-139,kukm1f54m_139,M-139,"Albert Gallatin Rhea papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt72fq9q2h57 +1F54M-141,kukm1f54m_141,M-141,"Kate M. Sandford vs. William Goebel papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gqn5z6f54 +1F54M-144,kukm1f54m_144,M-144,"Mrs. George F. Eaton papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ngf0msx2d +1F54M-151,kukm1f54m_151,M-151,"Nora Hackett Gayle papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt76hd7npf75 +1F54M-182,kukm1f54m_182,M-182,"Harbeson family scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rjd4pkn3m +1F54M-754,kukm1f54m_754,M-754,"Anne Smith Clay McDowell papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7v9s1khq4d +1F55M-146,kukm1f55m_146,M-146,"Kentucky Court of Appeals general index books",https://exploreuk.uky.edu/fa/findingaid/?id=xt79p843rc54 +1F55M-149,kukm1f55m_149,M-149,"Fisher family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7m639k422t +1F55M-165,kukm1f55m_165,M-165,"Urey Woodson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt79zw18m242 +1F55M-166,kukm1f55m_166,M-166,"Lonsdale, Walton and Company records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7r7s7hr05z +1F55M-167,kukm1f55m_167,M-167,"Joseph A. Sweeney journal",https://exploreuk.uky.edu/fa/findingaid/?id=xt779c6rz584 +1F55M-169,kukm1f55m_169,M-169,"Edward Guerrant autograph book from Johnson's Island and Bible with records of Confederate prisoners",https://exploreuk.uky.edu/fa/findingaid/?id=xt78930nsb7m +1F55M-171,kukm1f55m_171,M-171,"John M. Prewitt papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pk06wx860 +1F55M-177,kukm1f55m_177,M-177,"Joseph H. Lewis papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt702v2c8948 +1F55M-184,kukm1f55m_184,M-184,"Salem Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pzg6g258r +1F55M-211,kukm1f55m_211,M-211,"James M. Richardson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7brv0cvs5h +1F55M-212,kukm1f55m_212,M-212,"Ollie M. James papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7wst7ds00z +1F56M-188,kukm1f56m_188,M-188,"Luther C. Jeffries papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7xsj19m47k +1F56M-189,kukm1f56m_189,M-189,"Falmouth, Kentucky Board of Trustees minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt779c6rz52m +1F56M-192,kukm1f56m_192,M-192,"Vernon C. Stubblefield papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7nk931334m +1F56M-207,kukm1f56m_207,M-207,"Daniel Turner papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt73xs5j9t2b +1F56M-208,kukm1f56m_208,M-208,"Lexington Board of Park Commissioners and Civic League minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt7g7940sd3s +1F56M-232,kukm1f56m_232,M-232,"Reminiscences of Science Hill School: typescript, 1897",https://exploreuk.uky.edu/fa/findingaid/?id=xt751c1tf61t +M-234,kukm1f56m_234,M-234,"James and Thomas Johnston papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt79s46h1m2j +1F56M-237,kukm1f56m_237,M-237,"Mt. Pleasant Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7m901zd890 +1F56M-239,kukm1f56m_239,M-239,"Hunt-Morgan family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt71jw86hk1w +1F56M-246,kukm1f56m_246,M-246,"Charles Julian journal",https://exploreuk.uky.edu/fa/findingaid/?id=xt7b2r3nw75k +1F56M-252,kukm1f56m_252,M-252,"John Fox, Jr. and Madison J. Cawein letters to Micajah Fible",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mkk947x18 +1F56M-284,kukm1f56m_284,M-284,"Edward Henry Hobson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7v6w967h6h +1F57M-125,kukm1f57m_125,M-125,"James H. Polsgrove papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt74qr4nkj5g +1F57M-230,kukm1f57m_230,M-230,"Murray Circuit, Methodist Episcopal Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7vhh6c3492 +1F57M-244,kukm1f57m_244,M-244,"Ollie M. James papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7wst7ds00z +1F57M-249,kukm1f57m_249,M-249,"Medical records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7k9882k376 +1F57M-264,kukm1f57m_264,M-264,"Family Bible records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7r222r5h8r +1F57M-270,kukm1f57m_270,M-270,"Enoch Smith Wilson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mcv4bpg48 +1F58M-258,kukm1f58m_258,M-258,"Jacob Ward Rust autobiography",https://exploreuk.uky.edu/fa/findingaid/?id=xt786688h500 +1F58M-263,kukm1f58m_263,M-263,"Keene family genealogical papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pg44hn29m +1F58M-419,kukm1f58m_419,M-419,"St. Joseph's College accounts with W.H.H. Witherell for Wells Huston",https://exploreuk.uky.edu/fa/findingaid/?id=xt7c599z0n5w +1F59M-222,kukm1f59m_222,M-222,"John Allen Gano papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7tht2g7z52 +1F59M-227,kukm1f59m_227,M-227,"Brutus J. Clay papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt75tb0xpw79 +1F59M-272,kukm1f59m_272,M-272,"George L. Douglass papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7m3775tt6g +1F59M-273,kukm1f59m_273,M-273,"Stamping Ground Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hdr2p610j +1F59M-298,kukm1f59m_298,M-298,"Alma Owens Tibbals papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sxk84jp62 +1F59M-302,kukm1f59m_302,M-302,"Kentucky portion of John M. Clayton papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bvq2s508d +1F59M-308,kukm1f59m_308,M-308,"Camargo and Grassy Lick Methodist Episcopal Churches records",https://exploreuk.uky.edu/fa/findingaid/?id=xt72ng4gmz61 +1F59M-309,kukm1f59m_309,M-309,"Thomas M. Allen papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7f1v5bcr9w +1F59M-355,kukm1f59m_355,M-355,"Underwood family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7qjq0srf4h +1F59M-405,kukm1f59m_405,M-405,"George L. McCord papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt712j683g1n +1F59M-59,kukm1f59m_59,M-059,"Pond Creek, Ky. Ku Klux Klan membership roll",https://exploreuk.uky.edu/fa/findingaid/?id=xt72542j6w7x +1F60M-312,kukm1f60m_312,M-312,"Burrell H. Thurman papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gb56d2m3d +1F60M-313,kukm1f60m_313,M-313,"Farnsley family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt78w950gn7x +1F60M-315,kukm1f60m_315,M-315,"Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7fn29p329n +1F60M-316,kukm1f60m_316,M-316,"Florence Kentucky Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7p8c9r2m7q +1F60M-317,kukm1f60m_317,M-317,"Pisgah Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7zs756f94z +1F60M-318,kukm1f60m_318,M-318,"Mt. Eden Christian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt78930nsb2p +1F60M-321,kukm1f60m_321,M-321,"James Campbell Cantrill papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dbr8md85c +1F60M-329,kukm1f60m_329,M-329,"Memoirs, to which is prefixed the genealogy and brief historical account of those from whom he is lineally descended: typescript",https://exploreuk.uky.edu/fa/findingaid/?id=xt7xd21rg85v +1F60M-343,kukm1f60m_343,M-343,"Kentucky State Federation of Labor records",https://exploreuk.uky.edu/fa/findingaid/?id=xt770r9m3h4x +1F60M-345,kukm1f60m_345,M-345,"Registered Pharmacists, Local No. 48 and Retail Clerks International Protective Association, Local No. 64 records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hhm52g62r +1F60M-353,kukm1f60m_353,M-353,"Troy Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7t1g0htv83 +1F60M-360,kukm1f60m_360,M-360,"Cincinnatus Shryock scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mgq6qzp8r +1F60M-361,kukm1f60m_361,M-361,"John Graham record book",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ht7279w24 +1F60M-367,kukm1f60m_367,M-367,"Jessamine County, Ky. records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7z348gft2f +1F60M-393,kukm1f60m_393,M-393,"Albert Shelby Willis Political Scrapbooks",https://exploreuk.uky.edu/fa/findingaid/?id=xt7g4f1mh55t +1F60M-408,kukm1f60m_408,M-408,"Mary Cosby Shelby correspondence",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rn872vt95 +1F61M-371,kukm1f61m_371,M-371,"Manning-Biggs family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt72804xh296 +1F61M-383,kukm1f61m_383,M-383,"John Wilson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7m639k4217 +1F61M-396,kukm1f61m_396,M-396,"George T. Farris papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7s1r6n0r23 +1F61M-404,kukm1f61m_404,M-404,"Letters to George W. Williams from John Andrew Prall and others",https://exploreuk.uky.edu/fa/findingaid/?id=xt72jm23br82 +1F61M-410,kukm1f61m_410,M-410,"Shakertown Hotel register",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jm61bkm33 +1F61M-411,kukm1f61m_411,M-411,"Henry Cleveland Wood scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt73n58cg478 +1F61M-512,kukm1f61m_512,M-512,"James Shanklin papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt74mw289946 +1F62M-436,kukm1f62m_436,M-436,"Lee and Lashbrooke Company records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7f4q7qp01d +1F62M-440,kukm1f62m_440,M-440,"Twyman Brothers records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dfn10pf5b +1F62M-444,kukm1f62m_444,M-444,"Edwards-Reed family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt79s46h1m82 +1F62M-445,kukm1f62m_445,M-445,"Samuel Woodson Price papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7p2n4zh70z +1F62M-453,kukm1f62m_453,M-453,"Kentucky Court of Appeals case records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bvq2s507t +1F62M-454,kukm1f62m_454,M-454,"Mt. Zion Baptist Church, Graves County records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hmg7frd90 +1F62M-455,kukm1f62m_455,M-455,"Predestinarian Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7t4b2x4376 +1F62M-456,kukm1f62m_456,M-456,"Broadway Methodist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt77d7957c7m +1F62M-461,kukm1f62m_461,M-461,"Clay-Russell family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hx34mm21n +1F62M-462,kukm1f62m_462,M-462,"Fenley family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7tdz02zq97 +1F62M-465,kukm1f62m_465,M-465,"Union Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7x959c6294 +1F62M-466,kukm1f62m_466,M-466,"First Christian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bk35m9b91 +1F62M-467,kukm1f62m_467,M-467,"South Union Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7wm32n6j4w +1F62M-470,kukm1f62m_470,M-470,"Richwood Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt72bv79s98c +1F62M-472,kukm1f62m_472,M-472,"Walter Herbert Rankins papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gms3jx763 +1F62M-541,kukm1f62m_541,M-541,"Flemingsburg Presbyterian Church session book",https://exploreuk.uky.edu/fa/findingaid/?id=xt7s4m918x49 +1F62M-590,kukm1f62m_590,M-590,"Isaac Shelby papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt72ng4gmz0h +1F62M-591,kukm1f62m_591,M-591,"Alben W. Barkley file from Truman Presidential papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7t7659d918 +1F63M-205,kukm1f63m_205,M-205,"Joseph Cabell Harrison sermons",https://exploreuk.uky.edu/fa/findingaid/?id=xt7g1j976z6t +1F63M-481,kukm1f63m_481,M-481,"C. H. Ashton scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7w9g5gbw8w +1F63M-482,kukm1f63m_482,M-482,"Rebekah Lodge scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7k0p0wqg2z +1F63M-485,kukm1f63m_485,M-485,"Jerusalem and Sinking Springs Baptist Churches records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7qv97zm363 +1F63M-497,kukm1f63m_497,M-497,"Lucy Chenault Anderson scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt71c53dz448 +1F63M-506,kukm1f63m_506,M-506,"David Rice sermons",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cnp1wdq4x +1F63M-508,kukm1f63m_508,M-508,"Smithland Kentucky Board of Trustees records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sxk84jn4b +1F63M-511,kukm1f63m_511,M-511,"William Cooper Weaks papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7q833mwt7v +1F63M-514,kukm1f63m_514,M-514,"Woolfolk family genealogy",https://exploreuk.uky.edu/fa/findingaid/?id=xt70rx937v5v +1F63M-515,kukm1f63m_515,M-515,"Western Kentucky family Bible records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jq23qvt5d +1F63M-534,kukm1f63m_534,M-534,"Hickman County, Kentucky, militia roll",https://exploreuk.uky.edu/fa/findingaid/?id=xt73r20rrc1c +1F63M-535,kukm1f63m_535,M-535,"St. Paul's Episcopal Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt74tm71vr1q +1F63M-539,kukm1f63m_539,M-539,"Western Kentucky family histories of the Bonner, Cloyse and Cason families",https://exploreuk.uky.edu/fa/findingaid/?id=xt7h445hbb1m +1F63M-546,kukm1f63m_546,M-546,"Samuel Haycraft diaries",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sn00zq06j +1F63M-552,kukm1f63m_552,M-552,"Independent Order of Odd Fellows, Flemingsburg, Ky., records",https://exploreuk.uky.edu/fa/findingaid/?id=xt734t6f215g +1F63M-560,kukm1f63m_560,M-560,"Audubon family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jh98z9c9j +1F64M-26,kukm1f64m_26,M-026,"Foley family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bzk55f71f +1F64M-558,kukm1f64m_558,M-558,"Brown C. Tucker papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rbn9x1617 +1F64M-563,kukm1f64m_563,M-563,"Kentucky Federation of Business and Professional Women's Clubs records",https://exploreuk.uky.edu/fa/findingaid/?id=xt71vh5cc69c +1F64M-575,kukm1f64m_575,M-575,"Letters honoring Dr. Riley B. Montgomery",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bcc0tqw5d +1F64M-577,kukm1f64m_577,M-577,"Jonathan Ball Nichols papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rn872vt47 +1F64M-578,kukm1f64m_578,M-578,"Mrs. James M. and Miss Mary Gill collection of Bristow papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7xd21rg912 +1F64M-579,kukm1f64m_579,M-579,"Robert Wickliffe letterbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gf18sbt7w +1F64M-580,kukm1f64m_580,M-580,"Lucy Dupuy Craig Woolfolk diary",https://exploreuk.uky.edu/fa/findingaid/?id=xt71g15t7c1p +1F64M-586,kukm1f64m_586,M-586,"John B. Hutson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt79319s2300 +1F64M-587,kukm1f64m_587,M-587,"L. F. Van Cleve journal",https://exploreuk.uky.edu/fa/findingaid/?id=xt7kkw57dr62 +1F64M-602,kukm1f64m_602,M-602,"Doctors of Franklin County, KY: typescript",https://exploreuk.uky.edu/fa/findingaid/?id=xt70vt1gj15w +1F64M-727,kukm1f64m_727,M-727,"Halley family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt75mk654h4w +1F65M-592,kukm1f65m_592,M-592,"Georgetown Methodist Episcopal Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt715d8ncq3h +1F65M-598,kukm1f65m_598,M-598,"Paducah, Kentucky records collection",https://exploreuk.uky.edu/fa/findingaid/?id=xt7j9k45qz00 +1F65M-607,kukm1f65m_607,M-607,"Liberty Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ttd9n3m5g +1F65M-612,kukm1f65m_612,M-612,"Swigert family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt74b853fn3n +1F65M-614,kukm1f65m_614,M-614,"Centenary Methodist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pc824bt77 +1F65M-615,kukm1f65m_615,M-615,"South Frankfort Presbyterian Church and Lower Benson Presbyterian Church scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7v416sz94n +1F65M-623,kukm1f65m_623,M-623,"United States Embassy (Spain) records",https://exploreuk.uky.edu/fa/findingaid/?id=xt74mw289b0d +1F65M-627,kukm1f65m_627,M-627,"Rudolph Gottfried Zollinger diary",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mpg1hj545 +1F65M-643,kukm1f65m_643,M-643,"Louisville Nashville Railroad Company Board of Directors minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt71zc7rnf7w +1F66M-215,kukm1f66m_215,M-215,"Sardis Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt76q52f7v8w +1F66M-513,kukm1f66m_513,M-513,"First Christian Church, Philip Fall Memorial Library records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7h707wmj4h +1F66M-622,kukm1f66m_622,M-622,"Harrodsburg, Kentucky, trustees minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt7xgx44rg4g +1F66M-626,kukm1f66m_626,M-626,"Hickman family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ghx15n095 +1F66M-725,kukm1f66m_725,M-725,"Ripy family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7r4x54fs0c +1F66M-758,kukm1f66m_758,M-758,"Joseph E. Seagram and Sons, Inc. records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dz02z3k16 +1F67M-388,kukm1f67m_388,M-388,"Franklin County Medical Society records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7kpr7mq02x +1F67M-53,kukm1f67m_53,7M-053,"Associate Reformed Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rfj299d4h +1F67M-62,kukm1f67m_62,7M-062,"Hubbard Hinde Kavanaugh letters to Mrs. Annie Kimbrough Kavenaugh",https://exploreuk.uky.edu/fa/findingaid/?id=xt75qf8jdp4g +1F67M-621,kukm1f67m_621,M-621,"Daviess County Distilling Company records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7m0c4sjm59 +1F67M-636,kukm1f67m_636,M-636,"Robert Alexander papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt751c1tf518 +1F67M-645,kukm1f67m_645,M-645,"John Owen Suter papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt70cf9j403n +1F67M-683,kukm1f67m_683,M-683,"Extracts from the journal of Samuel Shepard",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dnc5s7x31 +1F67M-729,kukm1f67m_729,M-729,"Richard Hawes papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7zpc2t538q +1F69M-724,kukm1f69m_724,M-724,"Mt. Zion Baptist Church, Grant County, Ky. records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jq23qvs96 +1F70M-700,kukm1f70m_700,M-700,"Alpheus W. Blinn Scrapbook",https://exploreuk.uky.edu/fa/findingaid/?id=xt7v6w967g5c +1F71M-721,kukm1f71m_721,M-721,"Baptist Church of Jesus Christ records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7j3t9d5j0b +1F71M-722,kukm1f71m_722,M-722,"United Baptist Church of Jesus Christ records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7zcr5n9g07 +1F73M-768,kukm1f73m_768,M-768,"Preston family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7n5t3fz78j +1F74M-760,kukm1f74m_760,M-760,"Ohio Valley Baptist College records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sxk84jp0j +1F74M-761,kukm1f74m_761,M-761,"Prewitt families of Kentucky typescript",https://exploreuk.uky.edu/fa/findingaid/?id=xt73ff3kwp95 +1F74M-771,kukm1f74m_771,M-771,"Halley family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cz8928c36 +1F75M-770,kukm1f75m_770,M-770,"Arnold Joseph Toynbee letters to Robert Darbishire, 1909-1948",https://exploreuk.uky.edu/fa/findingaid/?id=xt7w0v89h67x +1F76M-769,kukm1f76m_769,M-769,"Legal form book",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sbc3svd1c +1F76M-775,kukm1f76m_775,M-775,"Lexington Parks and Recreation Department scrapbook and photo album",https://exploreuk.uky.edu/fa/findingaid/?id=xt72v6986d8g +1F76M-779,kukm1f76m_779,M-779,"Paducah Junior College scrapbooks",https://exploreuk.uky.edu/fa/findingaid/?id=xt7w9g5gbw79 +1F76M-818,kukm1f76m_818,M-818,"Record of matriculations",https://exploreuk.uky.edu/fa/findingaid/?id=xt75tb0xpx2x +1F78M-794,kukm1f78m_794,M-794,"David's Fork Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bnz80kj97 +1F78M-812,kukm1f78m_812,M-812,"First Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt70gb1xd54r +1F78M-817,kukm1f78m_817,M-817,"Clay family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt79057crv1w +1F79M-810,kukm1f79m_810,M-810,"Mt. Gilard Cumberland Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7w3r0psg00 +1F80M-791,kukm1f80m_791,M-791,"Christ Church Episcopal records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jsx64517s +1F80M-800,kukm1f80m_800,M-800,"Richwood Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7qjq0srf9f +1F80M-801,kukm1f80m_801,M-801,"South Elkhorn Baptist Church Records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7z610vr10v +1F80M-811,kukm1f80m_811,M-811,"Kentucky Postmasters Appointments",https://exploreuk.uky.edu/fa/findingaid/?id=xt77pv6b3160 +1F81M-822,kukm1f81m_822,M-822,"Perry family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dfn10pf6x +1F82M-789,kukm1f82m_789,M-789,"Cabin Creek Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7zgm81kn08 +1F82M-793,kukm1f82m_793,M-793,"Washington, Ky. Trustees minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt70k649pd87 +1F83M-787,kukm1f83m_787,M-787,"Orphan Society of Lexington records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7jh98z9c8z +1F83M-790,kukm1f83m_790,M-790,"Richard J. Colbert scrapbooks",https://exploreuk.uky.edu/fa/findingaid/?id=xt73j9605x4v +1F83M-806,kukm1f83m_806,M-806,"Hunt-Bullock papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt76dj58d70x +1F84M-788,kukm1f84m_788,M-788,"Bethel Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gxd0qrw6x +1F84M-796,kukm1f84m_796,M-796,"Elkton, Ky. City Council records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sf7664k2g +1F84M-799,kukm1f84m_799,M-799,"Maxwell Street Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt76q52f7v3z +1F84M-807,kukm1f84m_807,M-807,"St. John's Reformed Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cfx73vb0f +1F84M-808,kukm1f84m_808,M-808,"Evangelical Lutheran Emmanuel Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7sqv3c079j +1991ms001,kukm1f86m_795,M-795,"Elizaville Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt770r9m3j04 +1F86M-798,kukm1f86m_798,M-798,"Particular Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7q2b8vbc5g +1F86M-802,kukm1f86m_802,M-802,"John M. Wilson ledger",https://exploreuk.uky.edu/fa/findingaid/?id=xt7r4x54fr5r +1F86M-803,kukm1f86m_803,M-803,"Nehemiah Camp Tunis Ledger",https://exploreuk.uky.edu/fa/findingaid/?id=xt71ns0kss34 +1F87M-813,kukm1f87m_813,M-813,"First Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7b5m625g08 +1F87M-814,kukm1f87m_814,M-814,"Sardis Association of Old Regular Baptists records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7w6m332n4v +1F87M-816,kukm1f87m_816,M-816,"Stearns Coal Strike information files",https://exploreuk.uky.edu/fa/findingaid/?id=xt7bg737149w +1F87M-820,kukm1f87m_820,M-820,"J. Winston Coleman scrapbooks",https://exploreuk.uky.edu/fa/findingaid/?id=xt7z8w38174w +1F87M-823,kukm1f87m_823,M-823,Synfuels,https://exploreuk.uky.edu/fa/findingaid/?id=xt741n7xm089 +1F87M-825,kukm1f87m_825,M-825,"East Somerset Baptist Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7djh3czp51 +1F87M-826,kukm1f87m_826,M-826,"First Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7q2b8vbc14 +1F87M-827,kukm1f87m_827,M-827,"Union Christian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt74b853fn22 +1F87M-828,kukm1f87m_828,M-828,"John A. Lewis papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pc824bt6n +1F87M-829,kukm1f87m_829,M-829,"Henry Watterson papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7qft8dg83d +1FM-108,kukm1fm_108,M-108,"John Wesley Hunt daybook",https://exploreuk.uky.edu/fa/findingaid/?id=xt72rb6vx62w +1FM-20,kukm1fm_20,M-020,"Leeland Hathaway speeches",https://exploreuk.uky.edu/fa/findingaid/?id=xt7msb3wtc97 +1FM-28,kukm1fm_28,M-028,"Henry Clay Weaver letters",https://exploreuk.uky.edu/fa/findingaid/?id=xt7ns17snj6m +1FM-36,kukm1fm_36,M-036,"Transylvania University records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7z8w381698 +1FM-43,kukm1fm_43,M-043,"Thomas Johnson letters",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cjs9h4h13 +1FM-473,kukm1fm_473,M-473,"New Hope Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7gms3jx70k +1FM-49,kukm1fm_49,M-049,"Andrew J. Oots Cooper Shop records",https://exploreuk.uky.edu/fa/findingaid/?id=xt766t0gtt06 +1FM-566,kukm1fm_566,M-566,"E. E. Barton Collection",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mgq6qzr1r +1FM-597,kukm1fm_597,M-597,"Stevens Store and Mill Records",https://exploreuk.uky.edu/fa/findingaid/?id=xt75hq3rv85v +1FM-95,kukm1fm_95,M-095,"Guerrant family papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7b8g8ffp6x +53M-266,kukm1m53m_266,M-266,"Ebenezer Associate Reformed Presbyterian Church and Clear Creek Presbyterian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7wm32n6j0j +M-835,kukmm_835,M-835,"Marshall's General Store Account book",https://exploreuk.uky.edu/fa/findingaid/?id=xt72fq9q2j6c +M-429,m_429,M-429,"United Confederate Veterans: John C. Breckinridge Camp records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7rjd4pkm80 +M-111,M-111,M-111,"Fayette County burnt records"," http://exploreuk.uky.edu/catalog/xt7m3775tv7m/guide" +M-121,M-121,M-121,"Goebel family papers",https://exploreuk.uky.edu/catalog/xt7dr785j35r +M-133,M-133,M-133,"Bruce Ferguson scrapbook",https://exploreuk.uky.edu/catalog/xt7gf18sbt2z +M-137,M-137,M-137,"Percy Haly scrapbook",https://exploreuk.uky.edu/catalog/xt7rxw47qg7z +M-158,M-158,M-158,"Augustus E. Woodward diary",https://exploreuk.uky.edu/fa/findingaid/?id=xt7dnc5s7w0q +M-181,M-181,M-181,"Lizzie Hardin diary",https://exploreuk.uky.edu/catalog/xt7j3t9d5g7b +M-205,M-205,M-205,"Study of the Care of the Insane in Kentucky during the 1850s typescript",https://exploreuk.uky.edu/catalog/xt76m901zn0k +M-224,M-224,M-224,"Lexington, Kentucky Board of Trustees records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7prr1pgq69 +M-29,M-29,M-029,"Kentucky Circuit Court (Pike County) records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7kwh2d8f5c +M-301,M-301,M-301,"John Scott papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt73r20rv47k +M-307,M-307,M-307,"C.S. Royster papers",https://exploreuk.uky.edu/catalog/xt7crj48sf00 +M-319,M-319,M-319,"Archibald and Joseph Logan papers",https://exploreuk.uky.edu/fa/findingaid/?id=xt7pk06wx82n +M-320,M-320,M-320,"Barrow Unit papers",https://exploreuk.uky.edu/catalog/xt7v9s1khr0m +M-328,M-328,M-328,"Louisville Federation of Labor minutes",https://exploreuk.uky.edu/catalog/xt7zcr5n9f9z/guide +M-348,M-348,M-348,"Louisville deaths records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7fqz22g14j +M-368,M-368,M-368,"Alice Todd Field diary",https://exploreuk.uky.edu/catalog/xt7f4q7qp06b +M-46,M-46,M-046,"District Superior Court of Kentucky records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7stq5r8f2k +M-553,M-553,M-553,"William Sylvester Taylor papers",https://exploreuk.uky.edu/catalog/xt747d2q5g1f +M-557,M-557,M-557,"Rebecca Caudill papers [microfilm]",https://exploreuk.uky.edu/catalog/xt7hqb9v1n3n +M-593,M-593,M-593,"Marcella McKenna distillery collection",https://exploreuk.uky.edu/fa/findingaid/?id=xt7h707wmj8v +M-642,M-642,M-642,"Lexington, Kentucky, City-County Planning Commission records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7hmg7frf56 +M-69,M-69,M-069,"Central Christian Church records",https://exploreuk.uky.edu/fa/findingaid/?id=xt7mpg1hj49j +M-747,M-747,M-747,"John Brand letter books",https://exploreuk.uky.edu/catalog/xt72fq9q505h +M-751,M-751,M-751,"Paducah City Council minutes",https://exploreuk.uky.edu/fa/findingaid/?id=xt7cc24qk38c +M-805,M-805,M-805,"Aden G. Lovell papers",https://exploreuk.uky.edu/catalog/xt7b2r3nw879 +M-809,M-809,M-809,"Charles E. Lowther collection on Mining",https://exploreuk.uky.edu/catalog/xt7pzg6g2486 +M-246,,M-246,"Charles Julian Journal",https://exploreuk.uky.edu/fa/findingaid/?id=xt7b2r3nw75k diff --git a/exe/build-reproductions-only.php b/exe/build-reproductions-only.php new file mode 100644 index 0000000..a93b104 --- /dev/null +++ b/exe/build-reproductions-only.php @@ -0,0 +1,51 @@ +getMessage() . "\n"); + exit(1); +} diff --git a/tests/ReproductionsOnlyTest.php b/tests/ReproductionsOnlyTest.php new file mode 100644 index 0000000..e7b7e4f --- /dev/null +++ b/tests/ReproductionsOnlyTest.php @@ -0,0 +1,78 @@ +assertNotFalse($output_file); + + try { + $command = implode(' ', array_map('escapeshellarg', [ + PHP_BINARY, + ROOT . '/exe/build-reproductions-only.php', + APP . '/Config/microfilm.csv', + $output_file, + ])); + exec($command . ' 2>&1', $output, $exit_code); + + $this->assertSame(0, $exit_code, implode("\n", $output)); + $collections = require $output_file; + $this->assertIsArray($collections); + $this->assertNotEmpty($collections); + } finally { + unlink($output_file); + } + } + + public function testRestrictedFormKeepsReproductions(): void + { + $html = (new Mustache_Engine())->render( + load_template('Findingaid/requests'), + ['reproductions_only' => true] + ); + $this->assertStringNotContainsString('id="fa-schedule-retrieval"', $html); + $this->assertStringNotContainsString('id="fa-save-for-later"', $html); + $this->assertStringContainsString('id="fa-request-reproductions"', $html); + $this->assertStringContainsString('name="RequestType" value="Copy"', $html); + $this->assertStringNotContainsString('cannot be viewed in person', $html); + $this->assertStringContainsString('id="fa-request-submit"', $html); + } + + public function testRestrictedCollectionWithoutContentsCanBeRequested(): void + { + $html = (new Mustache_Engine())->render(load_template('Findingaid/requests'), [ + 'reproductions_only' => true, + 'collection_request' => [ + 'id' => 'fa-no-components-request', + 'container_list' => 'Example collection', + 'volume' => '', + 'container' => '', + ], + ]); + + $this->assertStringContainsString('id="fa-no-components-request"', $html); + $this->assertStringContainsString('name="RequestType" value="Copy"', $html); + $this->assertStringContainsString('id="fa-request-reproductions"', $html); + $this->assertStringNotContainsString('id="fa-schedule-retrieval"', $html); + $this->assertStringNotContainsString('id="fa-save-for-later"', $html); + } + + public function testUnlistedFormRetainsNormalOptions(): void + { + $html = (new Mustache_Engine())->render( + load_template('Findingaid/requests'), + ['reproductions_only' => false] + ); + $this->assertStringContainsString('id="fa-schedule-retrieval"', $html); + $this->assertStringContainsString('id="fa-save-for-later"', $html); + $this->assertStringContainsString('id="fa-request-reproductions"', $html); + $this->assertStringContainsString('name="RequestType" value="Loan"', $html); + $this->assertStringNotContainsString('cannot be viewed in person', $html); + } +} From ebdafd6e848a426de78214e28fdee5d145b494f4 Mon Sep 17 00:00:00 2001 From: Neal Date: Thu, 24 Sep 2026 11:49:41 -0400 Subject: [PATCH 2/5] extract icon for reuse; add flags for reproductions --- app/Assets/js/requests.js | 7 +++- app/Config/Config.php | 9 +++++ app/Controllers/Findingaid.php | 3 ++ app/Views/Findingaid/requests.mustache | 4 ++- app/Views/Layouts/application.mustache | 10 ++++-- .../harmful_language_statement.mustache | 34 ++++++++----------- 6 files changed, 44 insertions(+), 23 deletions(-) diff --git a/app/Assets/js/requests.js b/app/Assets/js/requests.js index 6edc6e9..d630875 100644 --- a/app/Assets/js/requests.js +++ b/app/Assets/js/requests.js @@ -3,6 +3,7 @@ var requests = (function() { var count = 0; var request_type = null; var collection_title; + var reproductions_only = false; function sortkey(label) { return label.replace(/\d+/g, function (number) { @@ -518,6 +519,9 @@ var requests = (function() { return request_type; }, set_request_type: function (new_request_type) { + if (reproductions_only && new_request_type !== 'request-reproductions') { + return false; + } if (request_type === new_request_type) { return false; } @@ -570,7 +574,7 @@ var requests = (function() { for (var i = 0; i < request_types.length; ++i) { subforms[i].init(ids[i]); } - request_type = default_request_type; + request_type = reproductions_only ? 'request-reproductions' : default_request_type; enable_current(); }, enable_current: enable_current, @@ -671,6 +675,7 @@ var requests = (function() { var button_collection_active = options["button_collection_active"]; var button_collection_inactive = options["button_collection_inactive"]; + reproductions_only = options["reproductions_only"] === true; model.init(); update(); diff --git a/app/Config/Config.php b/app/Config/Config.php index c32cb08..c24b448 100644 --- a/app/Config/Config.php +++ b/app/Config/Config.php @@ -8,6 +8,7 @@ class Config private $repo = []; private $redirects = []; private $nonuk = null; + private $reproductionsOnly = null; public function __construct() { @@ -37,6 +38,14 @@ public function __construct() } } + public function isReproductionsOnly($id) + { + if ($this->reproductionsOnly === null) { + $this->reproductionsOnly = require ROOT . '/generated/reproductions-only.php'; + } + return isset($this->reproductionsOnly[$id]); + } + public function get($key) { if (array_key_exists($key, $this->config)) { diff --git a/app/Controllers/Findingaid.php b/app/Controllers/Findingaid.php index 4368d4c..b26c850 100644 --- a/app/Controllers/Findingaid.php +++ b/app/Controllers/Findingaid.php @@ -244,6 +244,7 @@ public function show() $repository = $model->repository(); $requestable = ($repository === 'University of Kentucky'); + $reproductions_only = $requestable && $this->config->isReproductionsOnly($model->id()); $collection_request = false; if ($requestable and ($component_count == 0)) { @@ -284,6 +285,7 @@ public function show() 'collection_request' => $collection_request, 'title' => $this->cleanup($model->unittitle()), 'collection_id' => $model->id(), + 'reproductions_only' => $reproductions_only, 'call_number' => $model->unitid(), 'item_date' => $model->unitdate(), 'item_url' => '/catalog/' . $model->id() . '/', @@ -316,6 +318,7 @@ public function show() ]], 'title' => $model->title(), 'requestable' => $requestable, + 'reproductions_only' => $reproductions_only, 'repository' => $this->config->getRepo($repository), ] ); diff --git a/app/Views/Findingaid/requests.mustache b/app/Views/Findingaid/requests.mustache index 1b69fbb..1bc617f 100644 --- a/app/Views/Findingaid/requests.mustache +++ b/app/Views/Findingaid/requests.mustache @@ -14,6 +14,7 @@ Select request type + {{^reproductions_only}}
@@ -24,6 +25,7 @@
+ {{/reproductions_only}}
@@ -81,7 +83,7 @@
- + diff --git a/app/Views/Layouts/application.mustache b/app/Views/Layouts/application.mustache index 55fcde5..3cf74bc 100644 --- a/app/Views/Layouts/application.mustache +++ b/app/Views/Layouts/application.mustache @@ -20,8 +20,13 @@ {{> breadcrumbs}}
-
+
+ {{#reproductions_only}} +
+ {{> reproductions_only_notice}} +
+ {{/reproductions_only}}
{{{toc}}} @@ -56,7 +61,8 @@ button_active: "Remove", button_inactive: "Request", button_collection_active: "Remove Collection", - button_collection_inactive: "Add Collection to Request" + button_collection_inactive: "Add Collection to Request", + reproductions_only: {{#reproductions_only}}true{{/reproductions_only}}{{^reproductions_only}}false{{/reproductions_only}} }); {{/requestable}} diff --git a/app/Views/Layouts/harmful_language_statement.mustache b/app/Views/Layouts/harmful_language_statement.mustache index aae14cf..f393d09 100644 --- a/app/Views/Layouts/harmful_language_statement.mustache +++ b/app/Views/Layouts/harmful_language_statement.mustache @@ -1,22 +1,18 @@
-
-
- - - - - -
-
-

Harmful Language Statement

-
-

- You may come across language in UK Libraries Special Collections Research Center collections and online resources that you find harmful or offensive. SCRC collects materials from different cultures and time periods to preserve and make available the historical record. These materials document the time period when they were created and the view of their creator. As a result, some may demonstrate racist and offensive views that do not reflect the values of UK Libraries. -

-

- If you find a description with problematic language that you think SCRC should review, please contact us at SCRC@uky.edu. -

-
-
+
+
+ {{> information_icon}}
+
+

Harmful Language Statement

+
+

+ You may come across language in UK Libraries Special Collections Research Center collections and online resources that you find harmful or offensive. SCRC collects materials from different cultures and time periods to preserve and make available the historical record. These materials document the time period when they were created and the view of their creator. As a result, some may demonstrate racist and offensive views that do not reflect the values of UK Libraries. +

+

+ If you find a description with problematic language that you think SCRC should review, please contact us at SCRC@uky.edu. +

+
+
+
From d5a1f0bb917454097e05440f8f38699b4de60581 Mon Sep 17 00:00:00 2001 From: Neal Date: Thu, 24 Sep 2026 11:52:07 -0400 Subject: [PATCH 3/5] add reproductions only component; add extracted info to own partial --- app/Views/Layouts/information_icon.mustache | 5 +++++ app/Views/Layouts/reproductions_only_notice.mustache | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 app/Views/Layouts/information_icon.mustache create mode 100644 app/Views/Layouts/reproductions_only_notice.mustache diff --git a/app/Views/Layouts/information_icon.mustache b/app/Views/Layouts/information_icon.mustache new file mode 100644 index 0000000..6cf4592 --- /dev/null +++ b/app/Views/Layouts/information_icon.mustache @@ -0,0 +1,5 @@ + diff --git a/app/Views/Layouts/reproductions_only_notice.mustache b/app/Views/Layouts/reproductions_only_notice.mustache new file mode 100644 index 0000000..402efff --- /dev/null +++ b/app/Views/Layouts/reproductions_only_notice.mustache @@ -0,0 +1,11 @@ +
+
+ {{> information_icon}} +
+
+

Available for scanning only

+
+

During the King Library renovation, this collection cannot be viewed in person. Use the Requests section to request reproductions.

+
+
+
From 4ab908adbb475b638248bf54026f517804448f07 Mon Sep 17 00:00:00 2001 From: Neal Date: Thu, 24 Sep 2026 11:52:21 -0400 Subject: [PATCH 4/5] add styles --- app/Assets/css/extra.css | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/app/Assets/css/extra.css b/app/Assets/css/extra.css index 5623d4b..3f6932b 100644 --- a/app/Assets/css/extra.css +++ b/app/Assets/css/extra.css @@ -26,7 +26,6 @@ } :root { - /* Limestone values */ /* Limestone brand colors */ --color-wildcat-blue: #0033a0; --color-wildcat-white: #fff; @@ -35,6 +34,11 @@ --color-sky: #b1c9e8; --color-dark-gray: #515664; + /* Custom colors */ + --color-alert-blue: #1e8aff; + --color-alert-amber: #996000; + --color-alert-amber-background: #fff4d6; + /* Type scale */ --font-size-base: 1.1667rem; --font-size-lg: 1.5rem; @@ -292,8 +296,8 @@ button:focus:hover.button--ghost, @scope(.in-page-alert){ :scope{ background-color: var(--color-blue-gray); - border-left: 7px solid #1E8AFF; - padding: 1rem; + border-left: 7px solid var(--color-alert-blue); + padding: var(--space-md); display: flex; align-items: center; } @@ -318,10 +322,29 @@ button:focus:hover.button--ghost, } .icon-wrapper{ - margin-right: 2rem; + margin-right: var(--space-xl); + color: var(--color-alert-blue); } } +.in-page-alert.in-page-alert--amber { + background-color: var(--color-alert-amber-background); + border-left-color: var(--color-alert-amber); +} + +.in-page-alert--amber h2, +.in-page-alert--amber .icon-wrapper { + color: var(--color-alert-amber); +} + +.slab.fa-restricted-collection { + padding-top: var(--space-md); +} + +.fa-reproductions-only-notice { + margin-bottom: var(--space-xl); +} + .heading-section { margin: 1rem 0; } From 570de550d38716149e87c26fbe679c863687b860 Mon Sep 17 00:00:00 2001 From: Neal Date: Thu, 24 Sep 2026 11:55:15 -0400 Subject: [PATCH 5/5] update docs --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd58fe4..032c8a3 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,8 @@ get a report of linting violations, and `make lint-fix` to fix those that can be automatically fixed. These deliberately exclude line length as a fix. ## Contributors -Sarah Dorpinghaus, Neal Powers, Nicole Sand, and MLE Slone. For details, consult [CONTRIBUTORS](CONTRIBUTORS.md). +Sarah Dorpinghaus, Neal Powers, Nicole Sand, and MLE Slone. For details, consult +[CONTRIBUTORS](CONTRIBUTORS.md). ## Copyright @@ -134,3 +135,14 @@ This program uses the following software: - [Bootstrap](https://getbootstrap.com) - [jQuery](https://jquery.org) - [Fontawesome](https://fontawesome.com/) + +### Renovation reproduction restrictions + +`app/Config/microfilm.csv` identifies collections available only for scanning +during the +[King Library renovation](https://libraries.uky.edu/king-library-renovation-impacts). +Docker builds compile +`ead_location` URLs into `/opt/findingaid/generated/reproductions-only.php` for +development, CI, and production. This directory is outside the application bind +mount. The builder accepts both finding aid query URLs and `/catalog/` +URLs.