I have made some changes in yii2-giiant. When I'm updating yii2-giiant these changes are of course lost. How to extend yii2-giiant so that my changes remain in case of an update also? (I mean the extension should be basically updated)
Related
How can I set the default Scope when I make a search in the project with CTRL+SHIFT+F keys in my PhpStorm 2021?
You cannot.
https://youtrack.jetbrains.com/issue/IDEA-248460 -- watch this ticket (star/vote/comment) to get notified with any progress.
At the same time / info to remember:
If you invoke Find in Files (or Replace in Files) while the focus is in the Project View panel (or another file list) then the Selector will be set to that specific Directory.
At the same time, if you invoke it while the focus is in the Editor then the last used selector should remain (be it whole Project or a specific Module/Directory/Scope).
You may also check https://youtrack.jetbrains.com/issue/IDEA-143972 and related tickets there.
Sorry - I'm a total newbie with InstallShield. I've inherited an InstallShield 2013 project that presents the user with a dialog that let's the user select a SQL Server and based on their selection sets a value in a config file. That's not working, so I opened the project in IS and looked in the Text File Changes under System Configuration and there's nothing there that would do this. So how do I figure out where this is happening (or not happening in my case), and then how do I get it to work? I need to set both data source and initial catalog in a file called server.config.
So how do I determine what the user selected and then save that in this file? It looks like I can set up a Text File Change, but how do I access the values selected by the user? And how can I figure out where the "code" is that is supposed to be doing this?
Thanks,
Ben
I would try to track this from the dialog and controls in question, or by following the value through a verbose log. Since you say it doesn't work today, there will probably be an interruption in the flow I describe below, and since you don't know the full state of the installation project, it may be hard to identify. So search from what you know.
Top down: what gets configured
First, find the dialog that you fill out as a user making the selection. Then figure out the property that the particular control is associated with. Now you've got a thread; pull on it.
Search in the direct editor for references to the property. If the property is named MYCONFIG search for just that: MYCONFIG. You'll probably find some sort of use that looks like [MYCONFIG] instead, which is typically a format string specifying to use the value of MYCONFIG. You may also have to search all the files related to your project, as Custom Action implementations can be code stored outside of your InstallShield project.
The use may be in a ControlEvent, CustomAction, or some other table. If it's in a ControlEvent, it may be used to set another property. Ditto if it's in a CustomAction that sets properties (type 51) which may be easier to understand in the Custom Actions and Sequences view. In that case, also search for the property that gets set.
If you find it in a table like ISSearchReplace* or ISXml*, or IniFile, it's probably part of the Text Files Changes, XML File Changes, or INI File Changes, and that view should make it easier to understand.
Maybe that thread dead-ends somewhere. A property gets set, but never referenced. So try to search from the other end.
Bottom up: what gets written
If there are text file changes, xml file changes, ini file changes, or custom actions that reference the file you need updated, see where they get their information. Try to follow it back. If they're well written, you should be able to identify the property (noting that one called CustomActionData comes from a property matching the name of the custom action it's used in), and then trace that further back using the same ideas as above, but in the other direction.
Where's the problem?
If the threads don't connect, that's probably the problem. It's also possible that a custom action lacks permissions but doesn't reports a failure, or that the file name or path got misconfigured somewhere along the way. Look for small things like that if things look like they should work but don't.
It turns out that I misunderstood the problem and the project was never set up to change that value, so all I had to do was set up a Text File Change and it works perfectly. Thanks #Michael Urman for the thorough response - I really appreciate it!
I am using push notifications to watch changes. When I add or update a file everything is ok.
When I delete a file (i.e. it goes to bin) then I do get a notification for that file lets say changeid=81477. When I go to get that change I find that it no longer exists so I can't work out what changed. However if I then go and look at changes I can see a change id=81478 that I never received a notification for. Looking at this change I can see that explicityTrashed = true, which is indicates this is related to the deleted file.
Now, my guess is that change 81477 was superceded by 81478 for some reason, but why do I not receive a notification for 81478?
Someone (non-google) on google+ suggested keeping a track of last change processed and grabbing all changes greater than that when a notification arrives, but this is a workaround to me.
The problem I have is not getting one of the notifications at all. I am posting here in the hope that someone from Google can answer this satisfactorily.
Is it a bug? Or is it expected?
Should we not rely on getting all changes from notifications and implement something similar to suggested?
When a user selects a record in a datagrid I launch a pop-up window with more detailed info. The user can make changes to the record in this window but they don't have to save them. For example, they can click the X to close the window.
Unfortunately, I am stupid and whenever a user makes changes I update the object directly.
Is there a pattern for copying the object and then mapping the changes to it when a user confirms they want to save?
Thanks!
I wouldn't go with copy and merge. Why don't you just update the object only if the user explicitly wants to update/save? Let the UI be UI and condense the relevant information from it as soon as you need it.
Another way that may be appliable, if you want something like temporary edits, would be using commands for every atomic update, where every command has an inverse - undo - command. If you keep these in a history, you could just go back to the initial state.
I had a website made for me a long time ago, and the programmer did it in CakePHP. I'm now editing his scripts.
I added a couple columns to a table, and found that doing saveField() on the new column does not do anything. How do I make CakePHP recognize the new columns?
I'd appreciate your help. I'm not too familiar with CakePHP, so please go easy on me =)
The cache data is saved in YourAppFoloer/tmp/cache/models (delete the files there-in)
You can also try Cache::clear()
http://book.cakephp.org/view/1382/Clearing-the-Cache
Edit - this looked horrible in the comment:
You could add it to a controller to call:
function superHandyCacheClearer() {
$this->autoRender = false;
Cache::clear();
}
And call www.yourcakeapp.com/yourControllerYouAddedItTo/superHandyCacheClearer - but really, this is when you're making changes whilst in the code. Deleting the cache folder contents, really, should be the fix
make sure that the cache folder is still laid out like it was initially
cache
models
persistent
views
And that they are all 'writable' by the webserver, also note that unless you are running with a debug level of 0 some cache files may not be created every request. But remember that anytime you alter the model files or the database itself you should clear the cache/models folder.
HTH