1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<!-- ================================================================================================================= --> 5<!-- 6o Well, hello there! :-) 7o The Content Management System for this website is RocketFusion.com 8o RocketFusion and the RocketFusion logo are copyright Montague WebWorks, Inc. 9o Please direct code comments/feedback to https://MontagueWebWorks.com/contact 10o All content updated by the client: Town of Conway MA 11--> 12<!-- ================================================================================================================= --> 13<!-- Title and App Tags --> 14<!-- 20260930204856 --> 15<title>Site Map - Town of Conway MA</title> 16<meta property="og:title" content="Site Map"> 17<meta property="twitter:title" content="Site Map - Town of Conway MA"> 18<meta itemprop="name" content="Site Map - Town of Conway MA"> 19<!-- safari --> 20<meta name="apple-mobile-web-app-title" content="Site Map - Town of Conway MA"> 21<meta name="apple-mobile-web-app-capable" content="yes"> 22<meta name="apple-touch-fullscreen" content="yes"> 23<!-- chrome --> 24<meta name="mobile-web-app-capable" content="yes"> 25<!-- ie 10 --> 26<meta name="application-name" content="Site Map - Town of Conway MA"> 27<meta name="msapplication-tooltip" content="Site Map - Town of Conway MA"> 28<meta name="msapplication-starturl" content="/"> 29<!-- ================================================================================================================= --> 30<!-- Standard on all pages --> 31<meta charset="UTF-8" /> 32<meta http-equiv="content-type" content="text/html;charset=UTF-8"> 33<meta http-equiv="cache-control" content="public, max-age=86400"> 34<meta http-equiv="imagetoolbar" content="no"> 35<meta name="format-detection" content="telephone=yes"/><!-- was yes but Edge breaks it --> 36<!-- new google fonts --> 37<link rel="preconnect" href="https://fonts.googleapis.com"> 38<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 39<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ek+Mukta|Satisfy"> 40<meta name="theme-color" content="white" /> 41<meta name="Language" content="en" /> 42<meta name="apple-mobile-web-app-status-bar-style" content="black" /> 43<meta name="verify-v1" content=" " /> 44<meta name="source" content="exists" /> 45<meta name="geo.placename" content="Conway" /> 46<meta name="google-site-verification" content=" " /> 47<meta name="p:domain_verify" content=" " /> 48<meta name="geo.position" content="" /> 49<meta name="msapplication-TileColor" content="white" /> 50<meta name="last-modified" content="2026-10-09" /> 51<meta name="geo.region" content="US-MA" /> 52<meta name="msvalidate.01" content=" " /> 53<!-- no Facebook Pixel ID --> 54<meta name="author" content="Town of Conway MA" /> 55<meta name="owner" content="Town of Conway MA" /> 56<meta name="copyright" content="Copyright 2026 Town of Conway MA" /> 57<meta name="expires" content="Oct 9, 2026"> 58<meta name="generator" content="RocketFusion CMS" /> 59<meta name="Robots" content="noodp,noydir" /> 60<meta name="slurp" content="noydir" /> 61<meta name="googlebot" content="noodp" /> 62<meta name="msnbot" content="noodp" /> 63<meta name="MSSmartTagsPreventParsing" content="TRUE" /><!-- stops MS browsers from adding parsed keyword advertising on websites --> 64<meta name="viewport" content="width=device-width, initial-scale=1"><!-- , maximum-scale=1 --> 65<meta property="og:site_name" content="Town of Conway MA"> 66<meta property="og:type" content="website" /> 67<!-- ================================================================================================================= --> 68<!-- FAVICONS start --> 69<!-- favicon info --> 70<link rel="shortcut icon" href="/favicon.ico" /> 71<link rel="icon" href="/favicon.ico" type="image/x-icon" /> 72<link rel="apple-touch-icon" href="/favicon.ico"> 73<meta name="msapplication-TileImage" content="/favicon.ico"> 74<link rel="apple-touch-icon" sizes="16x16" href="/icons/favicon-16x16.png"> 75<link rel="icon" sizes="16x16" href="/icons/favicon-16x16.png"> 76<meta name="msapplication-square16x16logo" content="/icons/favicon-16x16.png"/> 77<link rel="apple-touch-icon" sizes="24x24" href="/icons/favicon-24x24.png"> 78<link rel="icon" sizes="24x24" href="/icons/favicon-24x24.png"> 79<meta name="msapplication-square24x24logo" content="/icons/favicon-24x24.png"/> 80<link rel="apple-touch-icon" sizes="32x32" href="/icons/favicon-32x32.png"> 81<link rel="icon" sizes="32x32" href="/icons/favicon-32x32.png"> 82<meta name="msapplication-square32x32logo" content="/icons/favicon-32x32.png"/> 83<link rel="apple-touch-icon" sizes="48x48" href="/icons/favicon-48x48.png"> 84<link rel="icon" sizes="48x48" href="/icons/favicon-48x48.png"> 85<meta name="msapplication-square48x48logo" content="/icons/favicon-48x48.png"/> 86<link rel="apple-touch-icon" sizes="57x57" href="/icons/favicon-57x57.png"> 87<link rel="icon" sizes="57x57" href="/icons/favicon-57x57.png"> 88<meta name="msapplication-square57x57logo" content="/icons/favicon-57x57.png"/> 89<link rel="apple-touch-icon" sizes="60x60" href="/icons/favicon-60x60.png"> 90<link rel="icon" sizes="60x60" href="/icons/favicon-60x60.png"> 91<meta name="msapplication-square60x60logo" content="/icons/favicon-60x60.png"/> 92<link rel="apple-touch-icon" sizes="64x64" href="/icons/favicon-64x64.png"> 93<link rel="icon" sizes="64x64" href="/icons/favicon-64x64.png"> 94<meta name="msapplication-square64x64logo" content="/icons/favicon-64x64.png"/> 95<link rel="apple-touch-icon" sizes="70x70" href="/icons/favicon-70x70.png"> 96<link rel="icon" sizes="70x70" href="/icons/favicon-70x70.png"> 97<meta name="msapplication-square70x70logo" content="/icons/favicon-70x70.png"/> 98<link rel="apple-touch-icon" sizes="72x72" href="/icons/favicon-72x72.png"> 99<link rel="icon" sizes="72x72" href="/icons/favicon-72x72.png"> 100<meta name="msapplication-square72x72logo" content="/icons/favicon-72x72.png"/> 101<link rel="apple-touch-icon" sizes="76x76" href="/icons/favicon-76x76.png"> 102<link rel="icon" sizes="76x76" href="/icons/favicon-76x76.png"> 103<meta name="msapplication-square76x76logo" content="/icons/favicon-76x76.png"/> 104<link rel="apple-touch-icon" sizes="96x96" href="/icons/favicon-96x96.png"> 105<link rel="icon" sizes="96x96" href="/icons/favicon-96x96.png"> 106<meta name="msapplication-square96x96logo" content="/icons/favicon-96x96.png"/> 107<link rel="apple-touch-icon" sizes="114x114" href="/icons/favicon-114x114.png"> 108<link rel="icon" sizes="114x114" href="/icons/favicon-114x114.png"> 109<meta name="msapplication-square114x114logo" content="/icons/favicon-114x114.png"/> 110<link rel="apple-touch-icon" sizes="120x120" href="/icons/favicon-120x120.png"> 111<link rel="icon" sizes="120x120" href="/icons/favicon-120x120.png"> 112<meta name="msapplication-square120x120logo" content="/icons/favicon-120x120.png"/> 113<link rel="apple-touch-icon" sizes="128x128" href="/icons/favicon-128x128.png"> 114<link rel="icon" sizes="128x128" href="/icons/favicon-128x128.png"> 115<meta name="msapplication-square128x128logo" content="/icons/favicon-128x128.png"/> 116<link rel="apple-touch-icon" sizes="144x144" href="/icons/favicon-144x144.png"> 117<link rel="icon" sizes="144x144" href="/icons/favicon-144x144.png"> 118<meta name="msapplication-square144x144logo" content="/icons/favicon-144x144.png"/> 119<link rel="apple-touch-icon" sizes="150x150" href="/icons/favicon-150x150.png"> 120<link rel="icon" sizes="150x150" href="/icons/favicon-150x150.png"> 121<meta name="msapplication-square150x150logo" content="/icons/favicon-150x150.png"/> 122<link rel="apple-touch-icon" sizes="152x152" href="/icons/favicon-152x152.png"> 123<link rel="icon" sizes="152x152" href="/icons/favicon-152x152.png"> 124<meta name="msapplication-square152x152logo" content="/icons/favicon-152x152.png"/> 125<link rel="apple-touch-icon" sizes="196x196" href="/icons/favicon-196x196.png"> 126<link rel="icon" sizes="196x196" href="/icons/favicon-196x196.png"> 127<meta name="msapplication-square196x196logo" content="/icons/favicon-196x196.png"/> 128<link rel="apple-touch-icon" sizes="310x310" href="/icons/favicon-310x310.png"> 129<link rel="icon" sizes="310x310" href="/icons/favicon-310x310.png"> 130<meta name="msapplication-square310x310logo" content="/icons/favicon-310x310.png"/> 131<link rel="manifest" href="/icons/manifest.json"> 132<meta name="apple-mobile-web-app-status-bar-style" content="black"> 133<meta name="msapplication-TileColor" content="white"> 134<meta name="theme-color" content="white"> 135<!-- MS Application Tasks (off for now) --> 136<!-- FAVICONS end --> 137<!-- this is something else: sitemap --> 138<meta property="og:url" content="https:/"> 139<link rel="canonical" href="https:/"> 140<meta itemprop="image" content="/library/Revised-main-street.jpg"> 141<meta property="og:image" content="/library/Revised-main-street.jpg"> 142<meta property="twitter:image" content="/library/Revised-main-street.jpg"> 143<link rel="image_src" href="/library/Revised-main-street.jpg"> 144<meta property="og:image:alt" content="Site Map"> 145<meta name="description" content="Town of Conway MA"> 146<meta itemprop="description" content="Town of Conway MA"> 147<meta property="og:description" content="Town of Conway MA"> 148<meta property="twitter:description" content="Town of Conway MA"> 149<!-- ================================================================================================================= -->
150<script src="https://kit.fontawesome.com/d3bffd01a6.js" crossorigin="anonymous"></script>
150 151<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> 152<link rel="stylesheet" href="/RFassets/css/datatables-bs4.min.css"> 153<link rel="stylesheet" href="/RFAssets/css/RFtables.css?ver=20260930204856"> 154<link rel="stylesheet" href="/RFAssets/css/joey.css?ver=20260930204856"> 155<link rel="stylesheet" href="/site_style.css?ver=20260930204856"> 156<link rel="stylesheet" href="/header_style.css?ver=20260930204856"> 157<link rel="stylesheet" href="/RFAssets/css/_admin.css?ver=20260930204856"> 158<!-- custom stylesheet --> 159<link rel="stylesheet" href="/tmpl_TMPL01.css?ver=20260930204856">
160<script src="/RFAssets/js/boxover.js" type="text/javascript"></script>
vendor: 1 bytes, line 160
160
161<script type="text/javascript"> 162function toggleLayer(whichLayer,what) { 163if (document.getElementById) 164{ 165var style2 = document.getElementById(whichLayer).style; 166style2.display = what; 167} 168else if (document.all) 169{ 170var style2 = document.all[whichLayer].style; 171style2.display = what; 172} 173else if (document.layers) 174{ 175var style2 = document.layers[whichLayer].style; 176style2.display = what; 177} 178} 179function toggleCheckbox(source) { 180checkboxes = document.getElementsByName('file_delete'); 181for(var i=0, n=checkboxes.length;i<n;i++) { 182checkboxes[i].checked = source.checked; 183} 184} 185</script>
185 186<!-- No text_Google_Analytics_account defined --> 187<!-- No text_Google_Tag_Manager_ID defined --> 188<!-- end of metatags --> 189</head> 190<body class="notMobile" 191id="default"> 192<!-- THESE ARE HERE (ADMIN) BECAUSE THEY NEED TO BE AT THE TOP OF THE BODY, NOT IN THE META TAGS --> 193<!-- No text_Google_Tag_Manager_ID defined --> 194<header> 195<div class="container-fluid top-container bg-blue-fade text-light"> 196<!-- Top-Section--> 197<div class="container"> 198<div class="row pt-2"> 199<div class="col-12 col-sm-6 col-md-3 seal d"> 200<a href="/"><img class="img-fluid" src="/site/conway.png" alt="Town of Conway Official Seal"></a> 201</div> 202<div class="col-12 col-sm-6 col-md-3"> 203<span class="h1"><a href="/">Conway</a></span> 204</div> 205<div class="col-12 col-sm-6 col-md-3 top-contact d-none d-sm-block"> 206<ul> 207<li><strong>Town of Conway Massachusetts</strong></li> 208<li>32 Main Street </li> 209<li>413-369-4235</li> 210<li><a href="/contact">Contact Us</a></li> 211</ul> 212</div> 213<div class="col-12 col-sm-6 col-md-3"> 214<div class="top-search mb-1"> 215<search class="center inline-block" style=""> 216<form method="get" action="/z/0/" class="sitesearch noprint mb-0" role="search" aria-label="search" class="inline-block" id="search" style=""> 217<div class="input-group" > 218<label for="term" class="sr-only" aria-label="Search">Search</label> 219<input title="Search Term" type="search" class="form-control" maxlength="30" name="term" id="term" placeholder="Search our website" value="" style="background:white!important;color:black!important;"> 220<span class="input-group-btn"> 221<button id="go" type="submit" aria-label="submit" class="btn btn-default black">Go!</button> 222</span> 223</div> 224<input type="hidden" name="module" value=""> 225</form> 226</search> 227</div> 228</div> 229</div> 230</div> 231</div> 232</header> 233<nav style="position:sticky;top:0;z-index:2000;" class="navbar pagenav-dropshade navbar-expand-lg navbar-dark bg-blue stick-top " role="navigation"> 234<div class="container"> 235<button class="navbar-toggler" data-toggle="collapse" data-target="#navbarNav" aria-expanded="false" aria-controls="navbar"> 236<span class="navbar-toggler-icon"></span> 237<span class="sr-only">Menu</span> 238</button> 239<div class="navbar-collapse collapse" id="navbarNav"> 240<ul class="navbar-nav ml-auto mr-auto"> 241<!-- no navcat_1 --> 242<li class="nav-item dropdown"> 243<a href="/" class="nav-link">Home</a> 244</li><!-- yo2 --> 245<!-- no navcat_6 --> 246<li class="nav-item dropdown"> 247<a href="/e/6/Departments" class="nav-link dropdown-toggle">Departments</a> 248<div class="dropdown-menu columns-3" id="drop-shade_6"> 249<div class="row"> 250<div class="col-sm-4"> 251<ul class="multi-column-dropdown"> 252<li> 253<a id="menu_p188" href="/p/188/Accountant" >Accountant</a> 254</li> 255<li> 256<a id="menu_p16" href="/p/16/Ambulance-Department" >Ambulance Department</a> 257</li> 258<li> 259<a id="menu_p92" href="/p/92/Animal-Control" >Animal Control</a> 260</li> 261<li> 262<a id="menu_p104" href="/p/104/Elections" >Elections</a> 263</li> 264<li> 265<a id="menu_p17" href="/p/17/Emergency-Management" >Emergency Management</a> 266</li> 267</ul><!-- a --> 268</div> 269<div class="col-sm-4"> 270<ul class="multi-column-dropdown"> 271<li> 272<a id="menu_p18" href="/p/18/Fire-Department" >Fire Department</a> 273</li> 274<li> 275<a id="menu_p19" href="/p/19/Conway-Highway-Department" >Highway Department</a> 276</li> 277<li> 278<a id="menu_p20" href="/p/20/Police-Department" >Police Department</a> 279</li> 280<li> 281<a id="menu_p21" href="/p/21/Town-Administrator" >Town Administrator</a> 282</li> 283<li> 284<a id="menu_p22" href="/p/22/Town-Clerk" >Town Clerk</a> 285</li> 286</ul><!-- a --> 287</div> 288<div class="col-sm-4"> 289<ul class="multi-column-dropdown"> 290<li> 291<a id="menu_p119" href="/p/119/TOWN-MEETING" >TOWN MEETING</a> 292</li> 293<li> 294<a id="menu_p32" href="/p/32/Transfer-Station" >Transfer Station</a> 295</li> 296<li> 297<a id="menu_p23" href="/p/23/Treasurer--Tax-Collector" >Treasurer / Tax Collector</a> 298</li> 299<li> 300<a id="menu_p91" href="/p/91/Tree-Warden" >Tree Warden</a> 301</li> 302</ul><!-- b --> 303</div> 304</div> 305</div><!-- was ul --> 306</li><!-- yo2 --> 307<!-- no navcat_5 --> 308<li class="nav-item dropdown"> 309<a href="/government" class="nav-link dropdown-toggle">Boards & Committees</a> 310<div class="dropdown-menu columns-3" id="drop-shade_5"> 311<div class="row"> 312<div class="col-sm-4"> 313<ul class="multi-column-dropdown"> 314<li> 315<a id="menu_p72" href="/g/72/A-Guide-to-Posting-Meetings-Agendas--Minutes" >A Guide to Posting Meetings, Agendas & Minutes</a> 316</li> 317<li> 318<a id="menu_p41" href="/g/41/Board-of-Assessors" >Board of Assessors</a> 319</li> 320<li> 321<a id="menu_p42" href="/g/42/Board-of-Health" >Board of Health</a> 322</li> 323<li> 324<a id="menu_p68" href="/g/68/Board-of-Registrars" >Board of Registrars</a> 325</li> 326<li> 327<a id="menu_p44" href="/g/44/Cable-Advisory-Committee" >Cable Advisory Committee</a> 328</li> 329<li> 330<a id="menu_p43" href="/g/43/Cemetery-Commission" >Cemetery Commission</a> 331</li> 332<li> 333<a id="menu_p47" href="/g/47/Community-Preservation-Committee" >Community Preservation Committee</a> 334</li> 335<li> 336<a id="menu_p48" href="/g/48/Conservation-Commission" >Conservation Commission</a> 337</li> 338<li> 339<a id="menu_p49" href="/g/49/Council-on-Aging" >Council on Aging</a> 340</li> 341</ul><!-- a --> 342</div> 343<div class="col-sm-4"> 344<ul class="multi-column-dropdown"> 345<li> 346<a id="menu_p50" href="/g/50/Cultural-Council" >Cultural Council</a> 347</li> 348<li> 349<a id="menu_p73" href="/g/73/Fence-Viewers" >
349Fence Viewers</a> 350</li> 351<li> 352<a id="menu_p74" href="/g/74/Festival-of-the-Hills" >Festival of the Hills</a> 353</li> 354<li> 355<a id="menu_p52" href="/g/52/Finance-Committee" >Finance Committee</a> 356</li> 357<li> 358<a id="menu_p53" href="/g/53/Forest-and-Trails-Committee" >Forest and Trails Committee</a> 359</li> 360<li> 361<a id="menu_p55" href="/g/55/Historical-Commission" >Historical Commission</a> 362</li> 363<li> 364<a id="menu_p70" href="/g/70/Mass-in-Motion--Age-Friendly-Conway" >Mass in Motion / Age-Friendly Conway</a> 365</li> 366<li> 367<a id="menu_p67" href="/g/67/Newsletter-Committee-Conway-Currents" >Newsletter Committee: Conway Currents</a> 368</li> 369<li> 370<a id="menu_p56" href="/g/56/Open-Space-Committee" >Open Space Committee</a> 371</li> 372</ul><!-- a --> 373</div> 374<div class="col-sm-4"> 375<ul class="multi-column-dropdown"> 376<li> 377<a id="menu_p57" href="/g/57/Parks--Recreation-Committee" >Parks & Recreation Committee</a> 378</li> 379<li> 380<a id="menu_p58" href="/g/58/Personnel-Committee" >Personnel Committee</a> 381</li> 382<li> 383<a id="menu_p59" href="/g/59/Planning-Board" >Planning Board</a> 384</li> 385<li> 386<a id="menu_p60" href="/g/60/Public-Buildings-Committee" >Public Buildings Committee</a> 387</li> 388<li> 389<a id="menu_p61" href="/g/61/School-Committee" >School Committee</a> 390</li> 391<li> 392<a id="menu_p39" href="/g/39/Select-Board" >Select Board</a> 393</li> 394<li> 395<a id="menu_p71" href="/g/71/Sustainability" >Sustainability</a> 396</li> 397<li> 398<a id="menu_p63" href="/g/63/Zoning-Board-of-Appeals" >Zoning Board of Appeals</a> 399</li> 400</ul><!-- b --> 401</div> 402</div> 403</div><!-- was ul --> 404</li><!-- yo2 --> 405<!-- no navcat_7 --> 406<li class="nav-item dropdown"> 407<a href="/e/7/How-Do-I" class="nav-link dropdown-toggle">How Do I...?</a> 408<div class="dropdown-menu columns-3" id="drop-shade_7"> 409<div class="row"> 410<div class="col-sm-4"> 411<ul class="multi-column-dropdown"> 412<li> 413<a id="menu_p55" href="/p/55/Apply-for" >Apply for...</a> 414</li> 415<li> 416<a id="menu_p183" href="/p/183/Track-Proposed-State-Legislation" >Track Proposed State Legislation</a> 417</li> 418<li> 419<a id="menu_p54" href="/p/38/Vote-By-Mail" >Vote By Mail</a> 420</li> 421</ul><!-- a --> 422</div> 423<div class="col-sm-4"> 424<ul class="multi-column-dropdown"> 425<li> 426<a id="menu_p58" href="/p/58/Get-a-permit-for" >Get a permit for...</a> 427</li> 428<li> 429<a id="menu_p53" href="/p/25/View-or-Pay-a-Bill" >Pay for....</a> 430</li> 431<li> 432<a id="menu_p43" href="/p/32/Transfer-Station" >Deal with Trash and Recycling</a> 433</li> 434</ul><!-- a --> 435</div> 436<div class="col-sm-4"> 437<ul class="multi-column-dropdown"> 438<li> 439<a id="menu_p44" href="https://townofconway.bbcportal.com/Entry" target="_blank" >Sign up for Emergency Alerts</a> 440</li> 441<li> 442<a id="menu_p56" href="/p/56/Look-at-GIS-Maps-of-Conway" >Look at GIS Maps of Conway</a> 443</li> 444</ul><!-- b --> 445</div> 446</div> 447</div><!-- was ul --> 448</li><!-- yo2 --> 449<!-- no navcat_9 --> 450<li class="nav-item dropdown"> 451<a href="/e/9/Special-Projects" class="nav-link dropdown-toggle">Special Projects</a> 452<div class="dropdown-menu columns-3" id="drop-shade_9"> 453<div class="row"> 454<div class="col-sm-4"> 455<ul class="multi-column-dropdown"> 456<li> 457<a id="menu_p95" href="/files/FINAL_Conway_Hazard_Mitigation_Plan_4-1-20.pdf" target="_blank" >Conway’s Hazard Mitigation Plan</a> 458</li> 459<li> 460<a id="menu_p31" href="/p/31/Conways-Master-Plan" >Conway’s Master Plan</a> 461</li> 462</ul><!-- a --> 463</div> 464<div class="col-sm-4"> 465<ul class="multi-column-dropdown"> 466<li> 467<a id="menu_p184" href="/p/184/Procurement-opportunities" >Procurement opportunities</a> 468</li> 469<li> 470<a id="menu_p39" href="/p/39/South-River-Flood-Mitigation" >South River Flood Mitigation</a> 471</li> 472</ul><!-- b --> 473</div> 474</div> 475</div><!-- was ul --> 476</li><!-- yo2 --> 477<!-- no navcat_8 --> 478<li class="nav-item dropdown"> 479<a href="/e/8/About-Conway" class="nav-link dropdown-toggle">About Conway</a> 480<div class="dropdown-menu columns-3" id="drop-shade_8"> 481<div class="row"> 482<div class="col-sm-4"> 483<ul class="multi-column-dropdown"> 484<li> 485<a id="menu_p186" href="/p/186/2017-Tornado" >2017 Tornado</a> 486</li> 487<li> 488<a id="menu_p170" href="https://www.conwayswimmingpool.org/" target="_blank" >Conway Community Swimming Pool</a> 489</li> 490<li> 491<a id="menu_p94" href="https://conwaymasshistory.org/" target="_blank" >Conway Historical Society</a> 492</li> 493<li> 494<a id="menu_p172" href="/p/172/Conway-Special-Events" >Conway Special Events</a> 495</li> 496</ul><!-- a --> 497</div> 498<div class="col-sm-4"> 499<ul class="multi-column-dropdown"> 500<li> 501<a id="menu_p187" href="/p/187/Conways-Burkeville-Covered-Bridge" >Conway's Burkeville Covered Bridge</a> 502</li> 503<li> 504<a id="menu_p152" href="/p/152/Conways-Municipal-Aggregation" >Conway’s Municipal Aggregation</a> 505</li> 506<li> 507<a id="menu_p99" href="https://festivalofthehills.com/" target="_blank" >Festival of the Hills</a> 508</li> 509<li> 510<a id="menu_p128" href="https://fieldmemoriallibrary.org/" >Field Memorial Library</a> 511</li> 512</ul><!-- a --> 513</div> 514<div class="col-sm-4"> 515<ul class="multi-column-dropdown"> 516<li> 517<a id="menu_p96" href="/files/General_Bylaws.pdf" target="_blank" >General Bylaws</a> 518</li> 519<li> 520<a id="menu_p77" href="/p/77/Town-Staff-Directory-and-Contact" >Town Staff Directory</a> 521</li> 522<li> 523<a id="menu_p97" href="/files/Conway_Protective_Zoning_Bylaws.pdf" target="_blank" >Zoning Bylaws</a> 524</li> 525</ul><!-- b --> 526</div> 527</div> 528</div><!-- was ul --> 529</li><!-- yo2 --> 530<!-- qsCats --> 531</ul><!-- d --> 532</div> 533</div> 534</nav> 535<main> 536<div class="container content-container-2 shadow"> 537<div class="row pb-5"> 538<!-- Jumbtron --> 539<div class="col-12 p-0"><img class="img-fit" src="/site/jumbo.jpg" alt="river surrounded by forest"></div> 540<!-- Mobile Contact --> 541<div class="col-12 p-3 d-block d-sm-none mobile-contact"> 542<div class="static mobile"> 543<!-- from var application.static.mobile --> 544</div> 545</div> 546<div class="col-12"> 547<div class="content"> 548<main> 549<!-- START PAGE DIV --> 550<div class="page e e8 " style=""> 551<div class="container maincontent"> 552<div class="row"> 553<div class="col-sm-12"> 554<h1>About Conway</h1> 555<ul class="toplevel"> 556<li ><a href="/p/186/2017-Tornado">2017 Tornado</a></li> 557<li><a href="https://www.conwayswimmingpool.org/" target="_blank">Conway Community Swimming Pool</a> >></li> 558<li><a href="https://conwaymasshistory.org/" target="_blank">Conway Historical Society</a> >></li> 559<li ><a href="/p/172/Conway-Special-Events">Conway Special Events</a></li> 560<li ><a href="/p/187/Conways-Burkeville-Covered-Bridge">Conway's Burkeville Covered Bridge</a></li> 561<li ><a href="/p/152/Conways-Municipal-Aggregation">Conway’s Municipal Aggregation</a></li> 562<li><a href="https://festivalofthehills.com/" target="_blank">Festival of the Hills</a> >></li> 563<li><a href="https://fieldmemoriallibrary.org/" target="">Field Memorial Library</a> >></li> 564<li><a href="/files/General_Bylaws.pdf" target="_blank">General Bylaws</a> >></li> 565<li ><a href="/p/77/Town-Staff-Directory">Town Staff Directory</a></li> 566<li><a href="/files/Conway_Protective_Zoning_Bylaws.pdf" target="_blank">Zoning Bylaws</a> >></li> 567<ul class="sublevel" id="sub_97"> 568<li><a href="/files/Conway_Zoning_Bylaws_-_Final_6-3-2023.pdf" >Zoning Bylaws</a> >></li> 569</ul> 570</ul> 571</div> 572</div> 573</div> 574</div> 575<!-- END PAGE DIV --> 576<div class="lowercontent"> 577<!-- START PAGE SECTIONS --> 578<!-- inside page sections --> 579<!-- this is NOT a p (62) --> 580<!-- canview = 1 (83) --> 581<!-- there are things to see (94) -->
582<script src="/RFAssets/js/animSections.js"></script>
582 583<!-- 584YOYOYO (127) pagesections: cannot edit! 585section_type = TextImage, section_mode = , section_type = YouTube, section_mode = , section_type = TextImage, section_mode = , 586--> 587<span class="zone" id="section_1036"></span> 588<!-- (134) calling static 1036 --> 589<!-- hello from static --> 590<style> 591.section-1036 .section-title { 592} 593.section-1036 .section-description * { 594} 595.section-1036 .inner { 596background: #; 597} 598.section-1036 .item-title a { 599} 600.section-1036 .item-description { 601} 602.section-1036 .item-description p { 603} 604.section-1036 .image { 605} 606</style> 607<section id="section1036" 608class="RF-section section-textimage 609section-1036 610mt-0 mb-0 padding-top-0 padding-right-0 padding-bottom-0 padding-left-0 " 611style="" 612> 613<div 614class="TextImage-content container padding-top-0 padding-right-0 padding-bottom-0 padding-left-0" 615style="border-style:none;border-color:#FFFFFF;border-width:1px;box-shadow:;"> 616<div class="row"> 617<!-- this is the text column --> 618<div id="text-1036" 619class="static-text static-right col-sm-12"> 620<!-- float --><!-- static calling figure --> 621<!-- HELLO FROM INSIDE FIGURE --> 622<figure 623class="pos-rel figure col-xs-12 col-sm-6 col-md-3" 624style="float:right; margin:0 0 10px 10px;padding:0px;text-align:center;"> 625<!-- call image --> 626<!-- hello from inside figure_image --> 627<div class="section_image "> 628<!-- hoohah 4 --> 629<!-- yes --> 630<img id="topImg" 631class="section img-responsive img-fluid figure-img rf-image-dropzone" 632style="margin:0 auto; border:0; " 633src="/section/TextImage-1036_small.jpg?20220921040922" 634alt="red bridge over river"> 635<!-- hoohah 34 --> 636</div> 637<!-- goodbye from inside figure_image --> 638</figure> 639<div id="myModal" class="modal-img" style="display:none;"> 640<div class="modal-img-container"> 641<span class="close"><i class="fas fa-times-circle"></i></span> 642<img class="modal-content" id="img01" alt="red bridge over river"> 643</div> 644</div> 645<style> 646img.page:hover { cursor: pointer; } 647</style> 648<!-- ======== File robot modals / scripts ======== -->
649<script> 650// Get the modal 651var modal = document.getElementById('myModal'); 652// Set Parameters for image and generate image src 653var imgParam = { name: 'TextImage-', imgID: '8', size: 'large', fileType: 'jpg' }; 654console.log('imgParam', imgParam); 655var imageChange = '/section/' + imgParam.name + imgParam.imgID + '_' + imgParam.size + '.' + imgParam.fileType; 656// Get the image and insert it inside the modal - use its "alt" text as a caption 657var img = document.getElementById('topImg'); 658var modalImg = document.getElementById("img01"); 659// onClick display modal 660if (img) { 661img.onclick = function () { 662console.log('[DEBUG] Image clicked. - ' + imageChange); 663modal.classList.add('modalFadeImg'); 664modalImg.src = this.innerHTML = imageChange; 665// modalImg.onerror = function(event) { 666// console.log(event); 667// modalImg.src = this.innerHTML = '/section/' + imgParam.name + '_' + imgParam.imgID + '_' + 'large' + '.' + imgParam.fileType; 668// } 669} 670}; 671// Get the <span> element that closes the modal 672var span = document.getElementsByClassName("close")[0]; 673//close the modal 674if(span) { 675span.onclick = function () { 676modal.classList.remove('modalFadeImg'); 677} 678}; 679if(modal) { 680modal.onclick = function() { 681modal.classList.remove('modalFadeImg'); 682} 683}; 684</script>
684 685<!-- GOODBYE FROM INSIDE FIGURE --> 686<!-- static called figure --> 687<span class="section-description item-description"> 688<p open="" sans="">The Town of Conway (37.8 square miles) lies in the foothills of the Berkshires just west of the Connecticut River Valley, a region rich in agriculture. It is the 4th largest in area of all towns in Franklin County and is the 11th most populous (1990 census).</p> 689<p open="" sans="">Conway shares boundaries with seven other towns: Buckland and Shelburne Falls to the north, Deerfield to the east and north, Whately and Williamsburg to the south, and Ashfield and Goshen to the west. It is the first hilltown northbound on State Route 116. Three miles east of the town line, Route 116 intersects Interstate 91, a north-south connection to nearby Greenfield and Northampton. Fifteen miles further east is Amherst, home to the University of Massachusetts and other colleges.</p> 690</span> 691</div> 692</div> 693</div> 694</section> 695<!-- 696YOYOYO (127) pagesections: cannot edit! 697section_type = YouTube, section_mode = , section_type = TextImage, section_mode = , 698--> 699<span class="zone" id="section_1100"></span> 700<!-- (138) EXTERNAL VIDEO --> 701<!-- hello from EXERNAL --> 702<style> 703.section-1100 .section-title { 704} 705.section-1100 .section-description *, .section-1100 .section-description { 706} 707.section-1100 .inner { 708background: #; 709} 710.section-1100 .item-title a { 711} 712.section-1100 .item-description { 713} 714.section-1100 .image { 715} 716</style> 717<section id="section1100" 718class="RF-section section-YouTube section-1100 mt-0 mb-0 padding-top-0 padding-right-0 padding-bottom-0 padding-left-0 " 719style="" 720> 721<div 722class="YouTube-content container padding-top-0 padding-right-0 padding-bottom-0 padding-left-0" 723style="border-style:none;border-color:#FFFFFF;border-width:1px;box-shadow:;"> 724<div class=""> 725<div class="col-sm-12 col-lg-4 section-image order-1 float-left"> 726<div class="section-video embed-responsive embed-responsive-16by9 inner image"> 727<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/mJ_-3bvz0Rs?VQ=HD720" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 728</div> 729</div> 730<div class=" order-2 order-sm-2 order-md-2"> 731<span class="section-description"><p>To contact the town regarding general questions, you can send email to <a href="mailto:[email protected]">[email protected]</a>.</p> 732<p>Conway geography/demographics: <a href="https://en.wikipedia.org/wiki/Conway, Massachusetts">https://en.wikipedia.org/wiki/Conway, Massachusetts</a></p> 733<p>Habitat for Humanity Wall Raising: GIS link: <a href="https://www.axisgis.com/ConwayMA/">https://www.axisgis.com/ConwayMA/</a></p></span> 734</div> 735</div> 736</div> 737</section> 738<!-- 739YOYOYO (127) pagesections: cannot edit! 740section_type = TextImage, section_mode = , 741--> 742<span class="zone" id="section_1037"></span> 743<!-- (134) calling static 1037 --> 744<!-- hello from static --> 745<style> 746.section-1037 .section-title { 747} 748.section-1037 .section-description * { 749} 750.section-1037 .inner { 751background: #; 752} 753.section-1037 .item-title a { 754} 755.section-1037 .item-description { 756} 757.section-1037 .item-description p { 758} 759.section-1037 .image { 760} 761</style> 762<section id="section1037" 763class="RF-section section-textimage 764section-1037 765mt-0 mb-0 padding-top-0 padding-right-0 padding-bottom-1 padding-left-0 " 766style="" 767> 768<div 769class="TextImage-content container padding-top-0 padding-right-0 padding-bottom-0 padding-left-0" 770style="border-style:none;border-color:#FFFFFF;border-width:1px;background:#FFFFFF;background:#FFFFFF;box-shadow:;"> 771<h2 class="section-title" align="Left">Conway History</h2> 772<div class="row"> 773<!-- this is the text column --> 774<div id="text-1037" 775class="static-text static-right col-sm-12"> 776<!-- float --><!-- static calling figure --> 777<!-- HELLO FROM INSIDE FIGURE --> 778<figure 779class="pos-rel figure col-xs-12 col-sm-6 col-md-4" 780style="float:right; margin:0 0 10px 10px;padding:0px;text-align:center;"> 781<!-- call image --> 782<!-- hello from inside figure_image --> 783<div class="section_image "> 784<!-- hoohah 4 --> 785<!-- yes --> 786<img id="topImg" 787class="section img-responsive img-fluid figure-img rf-image-dropzone" 788style="margin:0 auto; border:0; " 789src="/section/TextImage-1037_small.jpg?20220921040529" 790alt=""> 791<!-- hoohah 34 --> 792</div> 793<!-- goodbye from inside figure_image --> 794</figure> 795<div id="myModal" class="modal-img" style="display:none;"> 796<div class="modal-img-container"> 797<span class="close"><i class="fas fa-times-circle"></i></span> 798<img class="modal-content" id="img01" alt=""> 799</div> 800</div> 801<style> 802img.page:hover { cursor: pointer; } 803</style> 804<!-- ======== File robot modals / scripts ======== -->
805<script> 806// Get the modal 807var modal = document.getElementById('myModal'); 808// Set Parameters for image and generate image src 809var imgParam = { name: 'TextImage-', imgID: '8', size: 'large', fileType: 'jpg' }; 810console.log('imgParam', imgParam); 811var imageChange = '/section/' + imgParam.name + imgParam.imgID + '_' + imgParam.size + '.' + imgParam.fileType; 812// Get the image and insert it inside the modal - use its "alt" text as a caption 813var img = document.getElementById('topImg'); 814var modalImg = document.getElementById("img01"); 815// onClick display modal 816if (img) { 817img.onclick = function () { 818console.log('[DEBUG] Image clicked. - ' + imageChange); 819modal.classList.add('modalFadeImg'); 820modalImg.src = this.innerHTML = imageChange; 821// modalImg.onerror = function(event) { 822// console.log(event); 823// modalImg.src = this.innerHTML = '/section/' + imgParam.name + '_' + imgParam.imgID + '_' + 'large' + '.' + imgParam.fileType; 824// } 825} 826}; 827// Get the <span> element that closes the modal 828var span = document.getElementsByClassName("close")[0]; 829//close the modal 830if(span) { 831span.onclick = function () { 832modal.classList.remove('modalFadeImg'); 833} 834}; 835if(modal) { 836modal.onclick = function() { 837modal.classList.remove('modalFadeImg'); 838} 839}; 840</script>
840 841<!-- GOODBYE FROM INSIDE FIGURE --> 842<!-- static called figure --> 843<span class="section-description item-description"> 844<p>The land area that is now Conway was part of a grant in 1712 from the General Court enlarging the area of Deerfield. In 1762, after the close of the French and Indian Wars, the area was surveyed and divided into 141 lots averaging 150 acres. Lots were sold and settled rapidly, and in 1767 the land was separated from Deerfield and incorporated as the Town of Conway.</p> 845<p>In the following years, farms developed thickly and evenly throughout the hills, with forested land cleared for crops and pasture. By 1817, the extent of cleared land was as great as it ever would be. Much of this wood fueled the startup of sawmills. Gristmills and sawmills, built along the streams to harness waterpower, were the first mills of the settlers. Pumpkin Hollow, located at the geographical heart of Conway, became the center of town with a church, school, store, inn, harness shop, and wagon shop. As the population rose steadily, other parts of town, known as districts or neighborhoods, built their own schools. In all, sixteen districts formed each with its own schoolhouse.</p> 846<p>By the mid-1800s, the citizens of Conway were working hard toward rapid development of the manufacturing industry. Most factories were located along the South River, the main source of waterpower in town. Everything from textiles, hats, furniture, and cutlery to washing “machines” were made here. Gradually, Pumpkin Hollow was replaced as the “center” of town as banks and public buildings sprang up near the river.</p> 847<p>In the midst of the industrial boom of the nineteenth century, many farms were abandoned leaving pastures and fields to be reclaimed once again by forest. Early in the 20th century, the manufacturing industry went into decline, with many factories going out of business largely because of transportation costs to and from Conway. Stone foundations and cellar holes are the visible remains of many farms and factories of long ago. The remaining open land, cleared of trees and stones with much hard labor, is a treasured legacy from the past.</p> 848</span> 849</div> 850</div> 851</div> 852</section> 853<!-- END PAGE SECTIONS --> 854</div> 855</main> 856</div> 857</div> 858</div> 859</div> 860</main> 861<footer class="footer row"> 862<div class="col-12 col-sm-4"> 863<div class="static footer-one"> 864<!-- from var application.static.footer_one --> 865<p><strong>Quick Links:</strong></p> 866<ul> 867<li><a href="/x/5/Resident-Feedback">Resident Feedback</a></li> 868<li><a href="/p/77/Town-Staff-Directory-and-Contact">Staff Directory</a></li> 869</ul> 870</div> 871</div> 872<div class="col-12 col-sm-4"> 873<div class="static footer-two"> 874<!-- from var application.static.footer_two --> 875<p style="text-align:center"><a href="/"><img alt="town of conway logo" class="img-fluid" src="/site/conway.png" /></a></p> 876<p style="text-align: center;">Town of Conway Massachusetts<br /> 87732 Main Street, PO Box 240<br /> 878Conway, MA 01341<br /> 879413-369-4235<br /> 880413-369-4237 fax<br /> 881<a href="/contact">Contact Us</a></p> 882</div> 883</div> 884<div class="col-12 col-sm-4"> 885<div class="static footer-three"> 886<!-- from var application.static.footer_three --> 887<p><a href="https://www.413cares.org/">413Cares</a><br /> 888<a href="https://frcog.org/">Franklin Regional Council of Governments</a> (FRCOG)<br /> 889<a href="http://www.fcat.tv/">Franklin Community Access Television</a> (FCAT)<br /> 890<a href="https://franklincountywastedistrict.org/">Franklin County Solid Waste Management District</a> (FCSWMD)<br /> 891<a href="https://www.franklincc.org/">Franklin County Chamber of Commerce</a><br /> 892<a href="http://frta.org/">Franklin Regional Transit Authority</a> (FRTA)<br /> 893<a href="https://www.frsu38.org/conway/">Conway Grammar School</a><br /> 894<a href="https://www.fcts.us/">Franklin County Technical School</a><br /> 895<a href="https://www.frsu38.org/frontier/">Frontier Regional School</a></p> 896<p> </p> 897<p> </p> 898</div> 899</div> 900<div class="col-12 pt-3 text-center"> 901<p> 902<div id="footer"> 903<span class="footerO"> 904<span class="footerL"> 905© 2026 Town of Conway MA 906| 907Site by <a href=http://MontagueWebWorks.com target=_blank>Montague WebWorks</a> 908</span> 909<span class="footerM"> 910| 911</span> 912<span class="footerR">
913<a href="https://RocketFusion.com" target="_blank">Powered by RocketFusion 123</a> 914</span> 915</span> 916</div> 917</p> 918<p> 919<span class="login-link"> 920<a class="login noprint" href="" style="cursor:pointer;" rel="nofollow" aria-label="log in" data-toggle="modal" data-target="#Login" data-remote="/inc/divLogin.cfm?edit=Login">Admin Login</a> 921<div class="modal fade" id="Login" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-body"></div></div></div></div> 922</span> 923</p> 924</div> 925</footer> 926<!-- BS4 Init --> 927<div class="modal fade" id="reserve" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-body"></div></div></div><div id="load-res" class="loading-reserve d-none"></div></div>
928<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 928
928
929<script type="text/javascript" src="https://scaleflex.cloudimg.io/v7/plugins/filerobot-image-editor/latest/filerobot-image-editor.min.js?func=proxy"></script>
vendor: 1 bytes, line 929
929
930<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
vendor: 1 bytes, line 930
930
931<script> 932// Assuming we have a div with id="editor_container" 933const filerobotImageEditor = new window.FilerobotImageEditor( 934document.querySelector("#rf-image-editor-edit") 935); 936const image_file_upload = document.getElementById("rf-image-upload"); 937// const btn_image_upload_edit = document.getElementById("btn-image-upload-edit"); 938var source_image = ''; // the HTMLImageElement 939var save_image_name = ''; // name to save image with 940var global_fr_folder = ''; // where to upload 941var global_fr_table = ''; // db table to update 942var global_fr_prefix = ''; // image file prefix, ie; blocks_ 943var global_fr_pid = 0; // image ID, ie; blocks_2323 944var dropzone_website_dir = 'ConwayMA.gov\\httpdocs'; 945const file_robot_defaults = { 946save_image_quality : 1, // 0.1 - 1 (default 0.92) - applies to jpeg, jpg and webp images only 947}; 948function renderFileRobotEditor(source,fr_folder=global_fr_folder,fr_table=global_fr_table,fr_prefix=global_fr_prefix,fr_pid=global_fr_pid) { 949console.group("renderFileRobotEditor() called"); 950console.log('source:', source); 951console.log('fr_folder:', fr_folder); 952console.log('fr_table:', fr_table); 953console.log('fr_prefix:', fr_prefix); 954console.log('fr_pid:', fr_pid); 955console.groupEnd(); 956source_image = source; 957filerobotImageEditor.render({ 958source: source_image, 959useBackendTranslations: false, 960defaultSavedImageName: save_image_name, 961defaultSavedImageQuality: file_robot_defaults.save_image_quality, 962tabsIds: [ 963window.FilerobotImageEditor.TABS.ADJUST, 964window.FilerobotImageEditor.TABS.FINETUNE, 965window.FilerobotImageEditor.TABS.FILTERS, 966window.FilerobotImageEditor.TABS.ANNOTATE, 967window.FilerobotImageEditor.TABS.WATERMARK], // or ['Adjust', 'Annotate', 'Watermark'] 968defaultTabId: window.FilerobotImageEditor.TABS.ADJUST, 969Crop: { 970minWidth: 14, 971minHeight: 14, 972maxWidth: null, 973maxHeight: null, 974ratio: 'custom', 975ratioTitleKey: 'custom', 976noPresets: false, 977autoResize: false, 978presetsItems: [], 979presetsFolders: [], 980lockCropAreaAt: null, // 'top-left' 981}, 982// disable save modal 983onBeforeSave: () => { 984return false; 985}, 986onSave: async (imageInfo, designState) => { 987// console.log('onSave() imageInfo', imageInfo); 988// console.log('onSave() designState', designState); 989// create formData object to populate and send with fetch request 990const formData = new FormData(); 991formData.append('image64', imageInfo.imageBase64); 992formData.append('image_extension', imageInfo.extension); 993formData.append('image_height', imageInfo.height); 994formData.append('image_name', imageInfo.name); 995formData.append('image_name_with_extension', imageInfo.fullName); 996formData.append('image_quality', imageInfo.quality); 997formData.append('image_width', imageInfo.width); 998formData.append('dropzone_website_dir', dropzone_website_dir); // e.g. MikMuller.com\httpdocs 999formData.append('rf_dropzone_dir', fr_folder); 1000console.log('onSave() formData [2]', formData); 1001// add dropzone options for compatibility with current upload script 1002const drop_zone_options = { 1003tbl: fr_table, 1004imgbase: `${fr_prefix}${fr_pid}`, 1005imgname: imageInfo.fullName, 1006id: fr_pid 1007} 1008formData.append("dropzone_options", JSON.stringify(drop_zone_options)); 1009console.log('onSave() drop_zone_options', drop_zone_options); 1010try { 1011// _dropzone-file-upload-ajax.cfm 1012// _upload-base64.cfm (for testing) 1013console.log('renderFileRobotEditor.onSave() imageInfo', imageInfo); 1014const upload_request = await fetch('/inc/_dropzone-file-upload-ajax.cfm', { 1015method: 'POST', 1016body: formData 1017}); 1018const upload_result = await upload_request.json(); 1019// console.log('DEBUG: [onSave] upload_result', upload_result); 1020// close modal 1021$('#rfImageModalEdit').modal('hide'); 1022// page reload 1023window.location.reload(); 1024} catch (error) { 1025console.log('onSave() error', error); 1026const upload_result = { 1027code: 1, 1028message: error.message, 1029success: false 1030} 1031} 1032}, 1033onClose: (closingReason) => { 1034console.log("Closing reason", closingReason); 1035filerobotImageEditor.terminate(); 1036// reset the input field 1037document.getElementById('rf-image-upload').value = ''; 1038}, 1039}); 1040} 1041/** 1042* Function to handle image selection from the file input field 1043* async as we use a promise to await image load 1044*/ 1045async function onImageSelected(event, file_obj, fr_folder, fr_table, fr_prefix, fr_pid) { 1046let file; 1047if (file_obj) { 1048console.log('onImageSelected file_obj', file_obj, fr_folder, fr_table, fr_prefix, fr_pid); 1049file = file_obj; 1050} else { 1051file = event.target.files[0]; 1052} 1053save_image_name = file.name; 1054console.log('onImageSelected file', file); 1055// const reader = new FileReader(); 1056const image = new Image(); 1057const img_max_width = 1600; 1058image.src = URL.createObjectURL(file); 1059// Promise to await image load 1060await new Promise((resolve) => { 1061image.onload = () => { 1062const img_width = image.width; 1063const img_height = image.height; 1064// console.log('onImageSelected img load', img_width, img_height); 1065if (img_width > img_max_width) { 1066const img_scale = img_max_width / img_width;
1067image.width = img_width * img_scale; 1068image.height = img_height * img_scale; 1069} 1070// resolve the promise 1071resolve(); 1072}; 1073}); 1074// open the modal 1075$('#rfImageModalEdit').modal('show'); 1076// Render file robot 1077renderFileRobotEditor(image, fr_folder, fr_table, fr_prefix, fr_pid); 1078} 1079/** Function to handle image editing */ 1080function editExistingImage(image_url, image_name, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 1081console.log('[DEBUG] editExistingImage() called.'); 1082console.log('image_url:', image_url); 1083console.log('image_name:', image_name); 1084console.log('fr_folder:', fr_folder); 1085console.log('fr_table:', fr_table); 1086console.log('fr_prefix:', fr_prefix); 1087console.log('fr_pid:', fr_pid); 1088save_image_name = image_name; 1089renderFileRobotEditor(image_url, fr_folder, fr_table, fr_prefix, fr_pid); 1090} 1091/** Function to open the hidden input file field */ 1092function openFileInput(fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 1093console.log('[DEBUG] openFileInput() called.', fr_folder, fr_table, fr_prefix, fr_pid); 1094global_fr_folder = fr_folder; // where to upload 1095global_fr_table = fr_table; // db table to update 1096global_fr_prefix = fr_prefix; // image file prefix, ie; blocks_ 1097global_fr_pid = fr_pid; 1098image_file_upload.click(); 1099} 1100/** Function to open RF File Manager in a modal 1101* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 1102* Need the image full url to make a copy of for ai images 1103*/ 1104function openRFFileManager(current_image_url, fr_folder=global_fr_folder, fr_table=global_fr_table, fr_prefix=global_fr_prefix, fr_pid=global_fr_pid) { 1105// $($(this).data( "target" ) + ' .modal-body').load( data_remote ); 1106console.group("bs4_init openRFFileManager() called"); 1107console.log("current_image_url:", current_image_url); 1108console.log("fr_folder:", fr_folder); 1109console.log("fr_table:", fr_table); 1110console.log("fr_prefix:", fr_prefix); 1111console.log("fr_pid:", fr_pid); 1112console.groupEnd(); 1113const rfFileManagerModalIframe = document.getElementById('rfFileManagerModalIframe'); 1114rfFileManagerModalIframe.src = `/ckeditor/plugins/rffilemanager/browse.cfm?CKEditor=editor1&CKEditorFuncNum=1&langCode=en&direct=true&rf_website_dir=${fr_folder}&pid=` + fr_pid + `&image_url=` + encodeURIComponent(current_image_url) + `&page_parent_directory=${fr_folder}&image_prefix=${fr_prefix}&image_table=${fr_table}`; ; 1115$('#rfFileManagerModal').modal('show'); 1116} 1117/** Function to close the RF File Manager modal 1118* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 1119* Need to upload the image and then close the modal 1120*/ 1121function closeRFFileManagerModal(image_path, img_name='', fr_folder='', fr_table='', fr_prefix='', fr_pid=0) { 1122console.group("bs4_init closeRFFileManagerModal() called"); 1123console.log("image_path:",image_path); 1124console.log("img_name:",img_name); 1125console.log("fr_folder:",fr_folder); 1126console.log("fr_table:",fr_table); 1127console.log("fr_prefix:",fr_prefix); 1128console.log("fr_pid:",fr_pid); 1129console.groupEnd(); 1130$('#rfFileManagerModal').modal('hide'); 1131$('#rfImageModalEdit').modal('show'); 1132save_image_name = img_name; 1133// renderFileRobotEditor(image_path); 1134renderFileRobotEditor(image_path, fr_folder, fr_table, fr_prefix, fr_pid); 1135} 1136/** Function to close the RF File Manager modal without opening File Robot 1137* Will be used by ckeditor/plugins/rffilemanager/browse.cfm 1138*/ 1139function closeRFFileManagerModalOnly(reload=false) { 1140$('#rfFileManagerModal').modal('hide');
1141if (reload) { 1142setTimeout(() => { 1143window.location.reload(); 1144}, 500); 1145} 1146} 1147// Handle closing of modal without saving (must cleanup file robot editor) 1148$('#rfImageModalEdit').on('hidden.bs.modal', function (event) { 1149// console.log('modal closed'); 1150filerobotImageEditor.terminate(); 1151image_file_upload.value = ''; 1152}); 1153/** Rocketfusion - enable drag/drop zone on an image with the .rf-image-dropzone class */ 1154// Create dropzone object for all images with the .rf-image-dropzone class 1155const rf_image_drop_zone = document.querySelectorAll('.rf-image-dropzone'); 1156// Attach event listeners to all instances of rf_image_drop_zone 1157rf_image_drop_zone.forEach(function (i) { 1158// Handle drag over event 1159i.addEventListener('dragover', function(e) { 1160event.target.classList.add('image-dragover'); 1161dragOverHandler(e); 1162}); 1163// Handle drag leave event 1164i.addEventListener('dragleave', function(e) { 1165// console.log('Image dropzone dragleave'); 1166event.target.classList.remove('image-dragover'); 1167}); 1168// Handle drop event 1169i.addEventListener('drop', function(e) { 1170event.target.classList.remove('image-dragover'); 1171dropHandler(e); 1172}); 1173}); 1174/** 1175* Handles the drop event of files in the drop zone. 1176* Prevents the default behavior of opening the file and logs the names of the dropped files. 1177* 1178* @param {Event} ev - The drop event. 1179* @returns {undefined} 1180*/ 1181function dropHandler(ev) { 1182// console.log('File(s) dropped'); 1183// Prevent default behavior (Prevent file from being opened) 1184ev.preventDefault(); 1185if (ev.dataTransfer.items) { 1186// Use DataTransferItemList interface to access the file(s) 1187[...ev.dataTransfer.items].forEach((item, i) => { 1188// If dropped items aren't files, reject them 1189if (item.kind === 'file') { 1190const file = item.getAsFile(); 1191console.log(`file[${i}].name = ${file.name}`); 1192onImageSelected(i, file); 1193} 1194}); 1195} else { 1196// Use DataTransfer interface to access the file(s) 1197[...ev.dataTransfer.files].forEach((file, i) => { 1198console.log(`file[${i}].name = ${file.name}`); 1199onImageSelected(i, file); 1200}); 1201} 1202} 1203/** 1204* Handles the drag over event of files in the drop zone. 1205* Prevents the default behavior of opening the file. 1206* 1207* @param {Event} ev - The drag over event. 1208* @returns {undefined} 1209*/ 1210function dragOverHandler(ev) { 1211// Prevent default behavior (Prevent file from being opened) 1212ev.preventDefault(); 1213} 1214</script>
1214 1215<style> 1216.modal-fullscreen { 1217width: 100vw; 1218max-width: none; 1219height: 100%; 1220margin: 0; 1221} 1222.modal-content { 1223height: 100%; 1224border: 0; 1225@include border-radius(0); 1226} 1227.modal-body { 1228overflow-y: auto; 1229} 1230.image-dragover { 1231opacity: 0.5; 1232} 1233</style>
1234<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1234
1234
1235<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1235
1235
1236<script type="text/javascript" src="/RFAssets/js/joey.js?ver=20260930204856" charset="UTF-8"></script>
vendor: 1 bytes, line 1236
1236
1237<script type="text/javascript"> 1238$( 'body' ).on( 'click', '[data-toggle="modal"]', function(){ 1239let data_remote = $(this).data( "remote" ); 1240if ( data_remote && data_remote.length >= 2 ) { 1241$($(this).data( "target" ) + ' .modal-content').load( data_remote ); 1242} 1243}); 1244</script>
vendor: 1 bytes, line 1244
1244
1245<script> 1246$(document).ready(function() { 1247//$('nav').animate({opacity:'1'}, 50);<!-- set to 0.25 to make see thru --> 1248//$(img).animate({opacity:'1'}); 1249$initNavHgt = $('nav').outerHeight(); 1250$initHeadLogoHgt = $('#headerLogo').outerHeight(); 1251}); 1252</script>
vendor: 1 bytes, line 1252
1252
1253<script> 1254(function(d) 1255{ 1256var s = d.createElement("script"); 1257s.setAttribute("data-account", "efy2WEGV1m"); 1258s.setAttribute("src", "https://cdn.userway.org/widget.js"); 1259(d.body || d.head).appendChild(s); 1260} 1261) 1262(document) 1263</script>
1263 1264<noscript> 1265<p>Please ensure Javascript is enabled for purposes of <a href="https://userway.org" target="_blank">website accessibility</a></p> 1266</noscript> 1267</body> 1268</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.