mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-11-15 05:58:44 +00:00
add pagename and title
This commit is contained in:
@@ -80,7 +80,7 @@ const Homebrew = (props)=>{
|
|||||||
<Route path='/new' element={<WithRoute el={NewPage} userThemes={userThemes}/> } />
|
<Route path='/new' element={<WithRoute el={NewPage} userThemes={userThemes}/> } />
|
||||||
<Route path='/user/:username' element={<WithRoute el={UserPage} brews={brews} />} />
|
<Route path='/user/:username' element={<WithRoute el={UserPage} brews={brews} />} />
|
||||||
<Route path='/vault' element={<WithRoute el={VaultPage}/>}/>
|
<Route path='/vault' element={<WithRoute el={VaultPage}/>}/>
|
||||||
<Route path='/changelog' element={<WithRoute el={SharePage} brew={brew} disableMeta={true} />} />
|
<Route path='/changelog' element={<WithRoute el={SharePage} brew={brew} pageName={'changelog'} title={'Changelog: version ' + version} disableMeta={true} />} />
|
||||||
<Route path='/faq' element={<WithRoute el={SharePage} brew={brew} disableMeta={true} />} />
|
<Route path='/faq' element={<WithRoute el={SharePage} brew={brew} disableMeta={true} />} />
|
||||||
<Route path='/migrate' element={<WithRoute el={SharePage} brew={brew} disableMeta={true} />} />
|
<Route path='/migrate' element={<WithRoute el={SharePage} brew={brew} disableMeta={true} />} />
|
||||||
<Route path='/account' element={<WithRoute el={AccountPage} brew={brew} accountDetails={brew.accountDetails} />} />
|
<Route path='/account' element={<WithRoute el={AccountPage} brew={brew} accountDetails={brew.accountDetails} />} />
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ import Nav from './nav.jsx';
|
|||||||
|
|
||||||
export default function(props){
|
export default function(props){
|
||||||
return <div className='nav-section'>
|
return <div className='nav-section'>
|
||||||
<Nav.item color='grey' icon='fas fa-question-circle'>
|
|
||||||
need help?
|
|
||||||
</Nav.item>
|
|
||||||
<Nav.item color='red' icon='fas fa-fw fa-bug'
|
<Nav.item color='red' icon='fas fa-fw fa-bug'
|
||||||
href={`https://www.reddit.com/r/homebrewery/submit?selftext=true&text=${encodeURIComponent(dedent`
|
href={`https://www.reddit.com/r/homebrewery/submit?selftext=true&text=${encodeURIComponent(dedent`
|
||||||
- **Browser(s)** :
|
- **Browser(s)** :
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ const MetadataNav = createReactClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render : function(){
|
render : function(){
|
||||||
if(!this.props.brew.shareId) return <></>
|
if(!this.props.brew?.shareId) return <></>
|
||||||
|
|
||||||
return <Nav.item icon='fas fa-info-circle' color='grey' className='metadata'
|
return <Nav.item icon='fas fa-info-circle' color='grey' className='metadata'
|
||||||
onClick={()=>this.toggleMetaWindow()}>
|
onClick={()=>this.toggleMetaWindow()}>
|
||||||
|
|||||||
@@ -12,12 +12,13 @@ import AccountNavItem from './account.navitem.jsx';
|
|||||||
const { both: RecentNavItem } = RecentNavItems;
|
const { both: RecentNavItem } = RecentNavItems;
|
||||||
import Nav from './nav.jsx';
|
import Nav from './nav.jsx';
|
||||||
|
|
||||||
const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
const Navbar = ({ children, brew, pageName, editor, title, currentPage, props }) => {
|
||||||
const version = global.version || '0.0.0';
|
const version = global.version || '0.0.0';
|
||||||
const isMac = navigator.platform.toUpperCase().includes('MAC');
|
const isMac = navigator.platform.toUpperCase().includes('MAC');
|
||||||
const mod = isMac ? '⌘' : 'Ctrl';
|
const mod = isMac ? '⌘' : 'Ctrl';
|
||||||
const isBrew = !!brew && brew.shareId;
|
const isBrew = !!brew &&(brew.shareId || pageName === 'homePage' || pageName === 'newPage');
|
||||||
const account = global.account;
|
const account = global.account;
|
||||||
|
const generalPage = pageName === 'vaultPage' || pageName === 'changelog' || pageName === 'faq' || pageName === 'migrate';
|
||||||
|
|
||||||
const slots = React.Children.toArray(children).reduce((acc, child) => {
|
const slots = React.Children.toArray(children).reduce((acc, child) => {
|
||||||
if (React.isValidElement(child)) {
|
if (React.isValidElement(child)) {
|
||||||
@@ -28,16 +29,6 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
const renderTitle = () => {
|
|
||||||
const cleanTitle = title.replace(/^\/+|\/+$/g, '');
|
|
||||||
if (!isBrew) return <Nav.item className='brewTitle'>{cleanTitle || 'Home'}</Nav.item>;
|
|
||||||
return (
|
|
||||||
<Nav.item className='brewTitle' style={title.includes('edit') ? { cursor: 'default' } : {}}>
|
|
||||||
{brew.title}
|
|
||||||
</Nav.item>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const renderDownloadLink = () => {
|
const renderDownloadLink = () => {
|
||||||
if (!isBrew) return <Nav.item disabled={!isBrew}>Get txt</Nav.item>;
|
if (!isBrew) return <Nav.item disabled={!isBrew}>Get txt</Nav.item>;
|
||||||
let shareLink = brew.shareId;
|
let shareLink = brew.shareId;
|
||||||
@@ -65,14 +56,15 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
return (
|
return (
|
||||||
<Dropdown groupName={'File'} customTrigger={<>File</>} icon={null} key={'file'}>
|
<Dropdown groupName={'File'} customTrigger={<>File</>} icon={null} key={'file'}>
|
||||||
<NewBrewNavItem />
|
<NewBrewNavItem />
|
||||||
<Nav.item className='beta' disabled={!isBrew}>
|
|
||||||
Save document
|
|
||||||
</Nav.item>
|
|
||||||
<div className='nav-section'>
|
<div className='nav-section'>
|
||||||
<PrintNavItem disabled={!isBrew} />
|
<PrintNavItem disabled={!isBrew} />
|
||||||
{renderDownloadLink()}
|
{renderDownloadLink()}
|
||||||
</div>
|
</div>
|
||||||
<div className='nav-section'>
|
<div className='nav-section'>
|
||||||
|
<Nav.item href={`/new/${brew?.shareId}`} disabled={!isBrew}>
|
||||||
|
Clone File
|
||||||
|
</Nav.item>
|
||||||
|
{/*
|
||||||
<Nav.item className='beta' disabled={!isBrew}>
|
<Nav.item className='beta' disabled={!isBrew}>
|
||||||
Delete File
|
Delete File
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
@@ -82,6 +74,7 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
<Nav.item className='beta' disabled={!isBrew}>
|
<Nav.item className='beta' disabled={!isBrew}>
|
||||||
Transfer File
|
Transfer File
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
|
*/}
|
||||||
</div>
|
</div>
|
||||||
{slots.file?.props.children}
|
{slots.file?.props.children}
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
@@ -92,32 +85,32 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
return (
|
return (
|
||||||
<Dropdown groupName={'Edit'} customTrigger={<>Edit</>} icon={null} key={'edit'}>
|
<Dropdown groupName={'Edit'} customTrigger={<>Edit</>} icon={null} key={'edit'}>
|
||||||
<div className='nav-section'>
|
<div className='nav-section'>
|
||||||
<Nav.item onClick={() => editor?.undo()} kbd={mod + ' + z'} disabled={!isBrew}>
|
<Nav.item onClick={() => editor?.undo()} kbd={mod + ' + z'} disabled={!editor}>
|
||||||
Undo
|
Undo
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={() => editor?.redo()} kbd={mod + ' + Shift + z'} disabled={!isBrew}>
|
<Nav.item onClick={() => editor?.redo()} kbd={mod + ' + Shift + z'} disabled={!editor}>
|
||||||
Redo
|
Redo
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={() => editor?.find()} kbd={mod + ' + f'} disabled={!isBrew}>
|
<Nav.item onClick={() => editor?.find()} kbd={mod + ' + f'} disabled={!editor}>
|
||||||
Find / Replace
|
Find / Replace
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={() => editor?.foldCode()} disabled={!isBrew}>
|
<Nav.item onClick={() => editor?.foldCode()} disabled={!editor}>
|
||||||
Fold all lines
|
Fold all lines
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={() => editor?.unfoldCode()} disabled={!isBrew}>
|
<Nav.item onClick={() => editor?.unfoldCode()} disabled={!editor}>
|
||||||
Unfold all lines
|
Unfold all lines
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</div>
|
</div>
|
||||||
{slots.edit?.props.children}
|
{slots.edit?.props.children}
|
||||||
{/*
|
{/*
|
||||||
<div className="nav-section">
|
<div className="nav-section">
|
||||||
<Nav.item onClick={()=>editor?.cut()} kbd={mod + ' + x'} disabled={!isBrew}>
|
<Nav.item onClick={()=>editor?.cut()} kbd={mod + ' + x'} disabled={!editor}>
|
||||||
cut
|
cut
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={()=>editor?.copy()} kbd={mod + ' + c'} disabled={!isBrew}>
|
<Nav.item onClick={()=>editor?.copy()} kbd={mod + ' + c'} disabled={!editor}>
|
||||||
copy
|
copy
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item onClick={()=>editor?.paste()} kbd={mod + ' + v'} disabled={!isBrew}>
|
<Nav.item onClick={()=>editor?.paste()} kbd={mod + ' + v'} disabled={!editor}>
|
||||||
paste
|
paste
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</div>
|
</div>
|
||||||
@@ -130,15 +123,15 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
return (
|
return (
|
||||||
<Dropdown groupName={'Go'} customTrigger={<>Go</>} icon={null} key={'go'}>
|
<Dropdown groupName={'Go'} customTrigger={<>Go</>} icon={null} key={'go'}>
|
||||||
{renderEditLink()}
|
{renderEditLink()}
|
||||||
<ShareNavItem brew={brew} disabled={!isBrew} currentPage={'' /*how the hell do i get it here?*/} />
|
<ShareNavItem brew={brew} disabled={!brew?.shareId} currentPage={'' /*how the hell do i get it here?*/} />
|
||||||
<div className='nav-section'>
|
<div className='nav-section'>
|
||||||
<Nav.item className='patreon' newTab={true} href='https://www.patreon.com/NaturalCrit' color='green' icon='fas fa-heart'>
|
<Nav.item className='patreon' newTab={true} href='https://www.patreon.com/NaturalCrit' color='green' icon='fas fa-heart'>
|
||||||
Patreon
|
Patreon
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item color='purple' icon='fas fa-dungeon' href='/vault' newTab={false} rel='noopener noreferrer'>
|
<Nav.item icon='fas fa-dungeon' href='/vault' newTab={false} rel='noopener noreferrer'>
|
||||||
Vault
|
Vault
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item color='purple' icon='fas fa-dungeon' href='/changelog' newTab={false} rel='noopener noreferrer'>
|
<Nav.item icon='far fa-file-alt' href='/changelog' newTab={false} rel='noopener noreferrer'>
|
||||||
Changelog
|
Changelog
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</div>
|
</div>
|
||||||
@@ -162,6 +155,7 @@ const Navbar = ({ children, brew, pageName, editor, title = '', props }) => {
|
|||||||
<HelpNavItem />
|
<HelpNavItem />
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</ul>
|
</ul>
|
||||||
|
{generalPage && <Nav.item className='brewTitle'>{title}</Nav.item>}
|
||||||
<MetadataNavItem brew={brew}></MetadataNavItem>
|
<MetadataNavItem brew={brew}></MetadataNavItem>
|
||||||
<ul>
|
<ul>
|
||||||
<Dropdown groupName={account.username} customTrigger={<>{account.username}</>} icon={null} key={account.username}>
|
<Dropdown groupName={account.username} customTrigger={<>{account.username}</>} icon={null} key={account.username}>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
@import '@sharedStyles/core.less';
|
@import '@sharedStyles/core.less';
|
||||||
|
|
||||||
@navbarHeight: 28px;
|
@navbarHeight: 29px;
|
||||||
@viewerToolsHeight: 32px;
|
@viewerToolsHeight: 32px;
|
||||||
|
|
||||||
@keyframes glideDropDown {
|
@keyframes glideDropDown {
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
.navItem,
|
.navItem,
|
||||||
.menu-wrapper {
|
.menu-wrapper {
|
||||||
--activeTriggerColor: #666;
|
--activeTriggerColor: #666;
|
||||||
&:has(ul):not(:has(ul button:not(:disabled))) {
|
&:has(ul):not(:has(ul :is(button, a):not(:disabled))) {
|
||||||
color: grey; //faux disabled if all buttons are disabled
|
color: grey; //faux disabled if all buttons are disabled
|
||||||
}
|
}
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ const Meta = Headtags.Meta;
|
|||||||
|
|
||||||
import BrewRenderer from '../../brewRenderer/brewRenderer.jsx';
|
import BrewRenderer from '../../brewRenderer/brewRenderer.jsx';
|
||||||
import Navbar from '../../navbar/navbar.jsx';
|
import Navbar from '../../navbar/navbar.jsx';
|
||||||
import Nav from '../../navbar/nav.jsx';
|
|
||||||
import request from '../../utils/request-middleware.js';
|
import request from '../../utils/request-middleware.js';
|
||||||
|
|
||||||
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
|
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
|
||||||
@@ -64,11 +63,11 @@ const SharePage = (props)=>{
|
|||||||
document.removeEventListener('keydown', handleControlKeys);
|
document.removeEventListener('keydown', handleControlKeys);
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
console.log('brew: ',currentBrew);
|
||||||
return (
|
return (
|
||||||
<div className='sharePage sitePage'>
|
<div className='sharePage sitePage'>
|
||||||
<Meta name='robots' content='noindex, nofollow' />
|
<Meta name='robots' content='noindex, nofollow' />
|
||||||
<Navbar brew={currentBrew} pageName='sharePage' />
|
<Navbar brew={currentBrew} pageName={props.pageName || 'sharePage'} title={props.title || 'sharePage'} />
|
||||||
<div className='content'>
|
<div className='content'>
|
||||||
<BrewRenderer
|
<BrewRenderer
|
||||||
text={currentBrew.text}
|
text={currentBrew.text}
|
||||||
|
|||||||
@@ -393,7 +393,7 @@ const VaultPage = (props)=>{
|
|||||||
<div className='sitePage vaultPage'>
|
<div className='sitePage vaultPage'>
|
||||||
<link href='/themes/V3/Blank/style.css' rel='stylesheet' />
|
<link href='/themes/V3/Blank/style.css' rel='stylesheet' />
|
||||||
<link href='/themes/V3/5ePHB/style.css' rel='stylesheet' />
|
<link href='/themes/V3/5ePHB/style.css' rel='stylesheet' />
|
||||||
<Navbar pageName={'vaultPage'}/>
|
<Navbar pageName={'vaultPage'} title='Vault: Search for brews'/>
|
||||||
<div className='content'>
|
<div className='content'>
|
||||||
<SplitPane showDividerButtons={false}>
|
<SplitPane showDividerButtons={false}>
|
||||||
<div className='form dataGroup'>{renderForm()}</div>
|
<div className='form dataGroup'>{renderForm()}</div>
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ export default function useCommonEditPageFunctions(dependencies) {
|
|||||||
<div className= {`${pageName} sitePage`}>
|
<div className= {`${pageName} sitePage`}>
|
||||||
<Meta name='google-site-verification' content='NwnAQSSJZzAT7N-p5MY6ydQ7Njm67dtbu73ZSyE5Fy4' />
|
<Meta name='google-site-verification' content='NwnAQSSJZzAT7N-p5MY6ydQ7Njm67dtbu73ZSyE5Fy4' />
|
||||||
{(pageName == 'editPage') && <Meta name='robots' content='noindex, nofollow' />}
|
{(pageName == 'editPage') && <Meta name='robots' content='noindex, nofollow' />}
|
||||||
<Navbar brew={currentBrew} editor={editorRef.current} pageName={pageName} account={global.account}>
|
<Navbar brew={currentBrew} editor={editorRef.current} pageName={pageName} account={global.account} currentPage={currentBrewRendererPageNum}>
|
||||||
<Navbar.File>
|
<Navbar.File>
|
||||||
{error
|
{error
|
||||||
? (<ErrorNavItem error={error} clearError={clearError} />) : (<Dropdown className='save-menu' customTrigger={<>Save</>}>
|
? (<ErrorNavItem error={error} clearError={clearError} />) : (<Dropdown className='save-menu' customTrigger={<>Save</>}>
|
||||||
|
|||||||
Reference in New Issue
Block a user