I'm trying to create script for auto data import from one drupal site to other.
I have site foo.com and bar.com I'm trying to import everything from bar.com into foo.com.
So far I've managed to write script that imports all content types, nodes, blocks, etc. All that left is to import page with content. CTools module has clear function to export page data (panels, varants and etc...) but i cant find import function. (in admin panel there is way to import exported page, but import goes through a lot of functions, its too difficult to track all the way)
Is there an easer way to import page programmatically?
If you want to import anything from one site to another you are doing a site synchronization. And the best tool for this is Drush and commands rsync and sql-sync. See at Using Drush to synchronize and deploy sites.
If you want to import only Panel Pages you may use the Panel Import and of course Features.
An alternative option is Demo module to create site snapshots. Then a custom module can be used with a button to enable a demo snapshot.
And a more alternative idea is to create some feature modules (that add content, views, panels etc) and then a simple module that will have all these modules as required.
Related
I have a directory full of text files that I need to read in my react web app
-resources
|-file1.txt
|-file2.txt
|-file3.txt
I would like to store this resources directory somewhere in the app such that the contents of resources can be listed, and individual files can be iterated over on a line-by-line basis.
currently, I'm stuck on listing the files. I'm storing them like this
-node_modules
-public
|-resources
||-file1.txt
||-...
-src
But I really don't care where the resources directory is located. I tried using list-react-files based on this, but got Module not found: Error: Can't resolve 'fs'.
for further context, I was thinking the code to scan for files would be in in App.js, such that the scanned files could be used to populate certain components.
import React from "react"
import './App.css';
...
function App() {
//searching for files
var files = [...];
return(
//create components which can list and work with the files
...
);
}
export default App;
So, to summarize the question, how can I list files in reactJS?
p.s.:
this project was made with create-react-app
part of the point is that it should be easy to add new files to this directory, but I see no reason this process has to be "dynamic"
When people are using your react page, it is "running" on their computer and the software does not have access to all the files and data you'd like to use.
You will need to do this at "build time" when your service is being packaged up, or "on the server".
When you are building your react app, you can hook into processes that can find files and perform operations on them. Gatsby might be your best bet. Look at how people add "markup" files to their projects, built a menu from them and then render them as blog articles. NextJS, Vite, and other frameworks and tools will work, you may just need to learn a bit more.
The other approach, to do this "on the server" means when you are running code on the server you can do almost anything you like. So, your react app would make a call (e.g. rest request) to the server (e.g. NodeJS), and the code running on the server can use fs and other APIs to accomplish what you'd like.
From what you describe, doing this as part of your build step is probably the best route. A much easier route is to move this data into a JSON file and/or a database and not crawl the file system.
Looks like its a client side rendering app and not server side (node app). Resources folder you trying to list is residing in server and react app (javascript) running on browser can't access it directly.
To whom it may concern, I spent more time than I should have working on this. I highly recommend converting everything to JSON files and importing them. If you want to be able to scan for JSON files, make a JSON file that includes the names of all your files, then import that and use that for scanning. Doing things dynamically is a bare.
If you don't reformat, you'll likely need to use Fetch, which is asynchronous, which opens up a whole can of worms if you're using a framework like React.
If you're just importing json files, it's super easy:
import files from './resources/index.json';
where index.json looks like
{
"files":[
"file1.json",
"file2.json"
]
}
if you need to import the files more dynamically (not at the very beginning) you can use this:
var data = require('./resources/'+filename)
this will allow you to scan through your files using the index.json file, and load them dynamically as needed.
I've been trying to optimize my code based on the official guide: https://reactjs.org/docs/code-splitting.html
My app only displays a login form at the beginning. So having it load the whole app is pointless. It would be ideal for it to just load enough for it do display quickly (React, HTML, and CSS - the login form does not use any of the UI widgets we use inside). And in the background, prefetch the rest of the code while the user is logging in.
But the problem seems to be (I think) that webpack tries to create a "vendor" bundle with everything in it, and this includes React and the rest of the UI widget library. So even though I can try to split with dynamic components loaded with React router, all this does is split my code. The libraries for all components (even the login form) are all in the main bundle, and all of them reference this bundle anyways.
How can I split my code in such a way that the login form will load only what it actually requires to work, and then the rest (ideally) silently on the background while the user is entering their credentials?
My story:
I want to launch very quickly one page, but I am really bad at CSS. I know react and wanted to get better there so I bought two application templates from themeforest. One is landing page, another one is kind of a dashboard page. All styled, independently works great. Now I would like to integrate them into a one application, so when user clicks on "login" in landing page he will be redirected to the dashboard application login page. Both applications are indepented. Both are made using CRA. Backed will be writted in .NET.
How should I do this? What are the best ways to do this? I could "copy-paste" some of the files of the smaller application (landing) to the dashboard app and change the root of the react, this is doable but will take some time to move everything, and build properly. Maybe there is another way that you can think of?
Most of the react developers(not good in CSS) will be in a similar situation. There is no readily available solution I can think of. I suggest you to manually go through the landing.html and dashbaord.html and split it into 2 react components minimum. You mentioned that you know react, so it will be easy for you. The toughest part for you will be resolving CSS class conflicts. The two HTML files might be using the same classes. Here you need to go case by case or change the names of the CSS class for either landing-style.css file or dashboard-style.css file.
Time to learn CSS basics. Good luck with your CSS learning.
Why to merge the codebase, instead deploy them separately.
For example:
Let's deploy landing page to www.example.com and dashboard to app.example.com.
Once the user clicks on signup/sign-in just redirect to app.example.com.
This way you can focus on important aspects of each application.
Landing page for SEO and dashboard for new features.
I am running a website using PHP/MySQL. Now I want to allow Blogs using wordpress in my website so I can use Google Adsense along with blog content. I have installed Wordpress on my site, using tools provided by host service provider.
Now is there anyway I can import selective-content from MySQL database to these wordpress blogs? If so, how?
Thanks.
Short answer: maybe.
It all depends on how the content in your existing MySQL database was structured. If the old content was created by a content management system, see if it has a built-in exporter. WordPress has plug-ins that can import from a variety of commonly-used CMS platforms already. Check to see if yours is supported.
Unfortunately, if your content was just kind of "there" in the database without a CMS or any kind of standard (non-custom) structure, then this won't really work. My recommendation would be to use phpMyAdmin to export your content, then use a text editor to cut out the portions you want to keep and manually create new blog posts within WordPress. This process will be very time consuming but can be optimized if you want to build a custom importer.
Yes you can import/export your contents from/to other site respectively using following ways
Using Plugins like duplicator etc
Using the existing WordPress tools availabe in the Dashboard/Admin section like Import & Export
There may be other different methods also available on the internet.
The interactive console accessible at localhost:8080/_ah/admin is very useful for debugging your App Engine app.
I always find myself importing the same modules over and over again, particularly models.
I've looked into monkey patching the interactive console to automatically import these models, and I'm stumped. Ideally, I could do it from my app so I wouldn't need to reapply the patch every time I update the SDK.
I'll investigate and hopefully find an answer, please let me know if you have any ideas about how to accomplish this.
Good question! The relevant code for the interactive console is in InteractiveExecuteHandler at google/appengine/ext/admin/init.py:188. Specifically, it executes the code like this:
try:
compiled_code = compile(code, '<string>', 'exec')
exec(compiled_code, globals())
except Exception, e:
traceback.print_exc(file=results_io)
Note that for the globals, it simply uses the globals of the module it's in. So in order to provide your own imports, all you need to do is this:
Create your own module, where you import and subclass InteractivePageHandler and InteractiveExecuteHandler
Import any additional modules and classes you want in your new module - they'll automatically be imported for any code that's executed by them.
Override the generate() function from BaseRequestHandler in those classes so they look for the templates on google/appengine/ext/admin/templates instead of in the 'templates' subdir under your own module.
I ended up using the App Engine Console project which comes with an autoexec.py that provides the functionality I asked about.
I'm not sure if this is at all what you're going for, but you can just edit the html template for the interactive console page to have different default text entered. It's located at:
./google_appengine/google/appengine/ext/admin/templates/interactive.html
This would apply to all your apps, and as you mentioned you'd have to goof with it every time the SDK updated.